Könnte es sein, dass die Flash-Oberfläche nur ein Starter für das eigentliche Setup (ein eigenes Programm) ist?
(Spiel kein WOW daher weiß ichs nicht, würde die Sache aber vereinfachen)
Beiträge von Bitboy
-
-
Nenn doch mal ein Beispiel.
Mir fällt auf Anhieb nichts ein was so eine Installation benutzt. -
Bei dem Beispiel müsste das Skript allerdings in den Autostart.
Das verzögert natürlich den Rechnerstart...Eine weitere Alternative gibts auch nicht.
-
wird so nicht funktionieren. Da musst du in Windows die "Geplanten Tasks" (Start - Programme -> Zubehör -> Systemprogramme) benutzen.
-
Hm, komisch.
Der Fehler tritt nciht auf, wenn "Administratoren" als Gruppe eingegeben werden.
Bei einer anderen Gruppe, die ebenfalls das Recht hat Rechner zur Domäne hinzuzufügen kommt der Fehler wieder.Wäre es ein Rechteproblem, dürfte das Objekt doch auch gar nicht erstellt werden oder?
-
Ah, das mit dem Dollarzeichen hat schonmal das eine Problem gelöst. Danke, hatte cih ganz vergessen.
Create Computer produziert allerdings immer noch diesen Fehler.
Und ja es wird ein Computerkonto erstellt, dass vorher nicht da war.
Kann es daran liegen, dass Ich _AD_Open mit Parametern aufrufe?
Beziehungsweise an dem Parameter $sAD_UserID ?Geht mir darum folgende Funktion Nutzen zu können:
Spoiler anzeigen
[autoit]; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: _AD_JoinDomainEX
; Description ...: Joins the computer to a domain.
; Syntax.........: _AD_JoinDomain([$sAD_Computer, $sAD_OU, $sAD_UserParam, $sAD_PasswordParam])
; Parameters ....: $sAD_Computer - Optional: Computername to join to the domain, Default = @Computername (The computer the script is running on)
; The computer account is created if it not exists
; The computer account is enabled if it is disabled
; An existing account is moved to the specified OU
; $sAD_OU - Optional: Organisation Unit to join to, Default = "Computers"
; Use a format like this to specify a sub-ou: Computers\London\Office
; The Organisation Unit is created if it not exists
; $sAD_UserParam - Optional: User with admin rights to join the computer to the domain (NetBIOSName)
; +(Default = credentials under which the script is run or from _AD_Open are used)
; $sAD_PasswordParam - Optional: Password for $sAD_UserParam. (Default = credentials under which the script is run are used)
; Return values .: Success - 1
; Failure - 0, @error set
; |1 - Failed to create OU, see @extended to see error code from _AD_CreateOU
; |2 - Failed to enable the computer object, see @extended to see error code from _AD_EnableObject
; |3 - Failed to move existing computer object, see @extended to see error code from _AD_MoveObject
; |4 - Failed to create computer object, see @extended to see error code from _AD_CreateComputer
; |5 - Failed to create computer object with UserParam, see @extended to see error code from _AD_CreateComputer
; |6 - Joining the domain was not successful. @extended holds the Win32 error code (see: http://msdn.microsoft.com/en-us/library/…1(v=VS.85).aspx)
; Author ........: Thomas Rupp
; Modified.......: Bitboy
; Remarks .......: The domain to which the computer is joined to is the domain the user logged on to using AD_Open.
; If no credentials are passed to this function but have been used with _AD_Open() then the _AD_Open credentials will be used for this function.
; You have to reboot the computer after a successful join to the domain.
; The JoinDomainOrWorkgroup method is available only on Windows XP computer and Windows Server 2003 or later.
; Related .......: _AD_CreateComputer
; Link ..........: http://technet.microsoft.com/en-us/library/ee692588.aspx, http://msdn.microsoft.com/en-us/library/aa392154(VS.85).aspx
; Example .......: Yes
; ===============================================================================================================================
Func _AD_JoinDomainEX($sAD_Computer = "", $sAD_OU = "", $sAD_UserParam = "", $sAD_PasswordParam = "")
Local $OUArr, $i, $sAD_ParentOU
Local $sAD_DomainName = StringReplace(StringReplace($sAD_DNSDomain, "DC=", ""), ",", ".")$sAD_ParentOU = $sAD_DNSDomain
[/autoit] [autoit][/autoit] [autoit]
$sAD_OUTemp = $sAD_OUIf $sAD_Computer = "" Then $sAD_Computer = @ComputerName
[/autoit] [autoit][/autoit] [autoit]
If $sAD_OU = "" Then
$sAD_OU = "OU=Computers," & $sAD_DNSDomain
Else
$OUArr = StringSplit($sAD_OU, "\", 1)
;Check if OU exits, otherwise create it
For $i = 1 To $OUArr[0]
$sAD_OU = $OUArr[$i]
If _AD_ObjectExists($sAD_OU , "distinguishedName") = 0 Then
_AD_CreateOU($sAD_ParentOU, $sAD_OU)
If @error Then
If @error <> 2 Then Return SetError(1, @error, 0)
EndIf
EndIf
$sAD_ParentOU = "OU=" & $sAD_OU & "," & $sAD_ParentOU
Next$sAD_OU = ""
[/autoit] [autoit][/autoit] [autoit]
For $i = $OUArr[0] To 1 Step -1
$sAD_OU = $sAD_OU & "OU=" & $OUArr[$i] & ","
Next
$sAD_OU = $sAD_OU & $sAD_DNSDomain
EndIf;Check if computer account exists
[/autoit] [autoit][/autoit] [autoit]
If _AD_ObjectExists($sAD_Computer & "$") = 1 Then
_AD_MoveObject($sAD_OU, $sAD_Computer & "$")
If @error > 0 Then Return SetError(3, @error, 0);Check if is disabled
[/autoit] [autoit][/autoit] [autoit]
If _AD_IsObjectDisabled($sAD_Computer & "$") Then _AD_EnableObject($sAD_Computer & "$")
If @error Then Return SetError(2, @error, 0)
Else
;account does not exist
;create computer account
If $sAD_UserParam = "" Then
_AD_CreateComputer($sAD_OU, $sAD_Computer, $sAD_UserId)
If @error Then Return SetError(4, @error, 0)
Else
;Todo
;_AD_CreateComputer($sAD_OU, $sAD_Computer, $sAD_DomainName & "\" & $sAD_UserParam)
;If @error Then Return SetError(5, @error, 0)
EndIf
EndIf; _AD_JoinDomain($sAD_Computer, $sAD_UserParam, $sAD_PasswordParam)
[/autoit]
; If @error Then Return SetError(6, @error, 0)
Endfunc -
Habe ein Problem mit der Funktion _AD_ObjectExists()
Wenn man ein Computerobjekt prüft, liefert die Funktion immer 0 zurück, auch dann wenn das Objekt existiert.
Ruft man die Funktion so auf: _AD_ObjectExists($sAD_Object, "name")
funktioniert es richtig.Das Problem tritt vor allem dann auf wenn die Funktion in anderen Funktionen genutzt wird, zum Beispiel _AD_MoveObjekt oder _AD_IsObjectDisabled.
Hier lässt sich ja der 2. Parameter von _AD_ObjectExists() nicht verändern.Mir ist noch etwas aufgefallen, _AD_CreateComputer gibt 0 zurück, auch wenn das Computerobjekt erstellt worden ist. Fehlernummer: -2147352567
-
Schade, bisher keine Rückmeldungen obs bei euch funktioniert.
Scheint aber ein generelles Problem zu sein, den google Ergebnissen nach zu urteilen.Hier gibts ne Lösung dazu: http://www.autoitscript.com/forum/index.php?showtopic=102481&st=0&p=727417&hl=folder%20options&fromsearch=1&#entry727417
Wäre trotzdem schön wenn jemand den Fehler bestätigen könnte.
Dann schreib ich einen BUG-Report.Suchtags:
SysTreeView32, SysTreeView321, Check, UnCheck, IsChecked -
Kann es sein, dass ControlTreeView bei SysTreeView32 nicht ganz korrekt arbeitet?
Die Optionen "IsChecked", "Check", "UnCheck" scheinen nicht zu funktionieren.
[autoit]
Check bzw Uncheck kann man noch mit Controlsend hinbekommen, dafür müsste man aber Wissen wie der aktuelle Zustand ist.
Kann das jemand bestätigen?Dim $i, $text, $Checked
[/autoit][autoit][/autoit][autoit]For $i = 0 To 5
[/autoit]
$text = ControlTreeView("Klassisches Startmenü anpassen", "", "SysTreeView321","GetText", "#" & $i)
;Funktioniert nicht:
$Checked = ControlTreeView("Klassisches Startmenü anpassen", "", "SysTreeView321","IsChecked","#" & $i)
ControlTreeView("Klassisches Startmenü anpassen", "", "SysTreeView321","Check","#" & $i)
;Funktioniert
;ControlTreeView("Klassisches Startmenü anpassen", "", "SysTreeView321","Select","#" & $i)
;ControlSend("Klassisches Startmenü anpassen", "", "SysTreeView321","{Space}")
MsgBox(0, $text, "Ausgewählt: " & $Checked)
NextBetriebssystem ist WinXP SP3
-
Hm, hört sich nicht so an als würde man das Programm kostenlos wo runterladen können um das skript testen zu können.
Selbst wenn würde es vermutlich ohne angeschlossenes Chroma dings eh nicht starten...Wie Micha_He erwähnt hat ist es etwas fummelig rauszufinden ob der Button angeklickt wurde.
Wäre also interessant zu wissen was das Programm dann genau tut (Fenster öffnen, RegKey ändern, Prozess starten....)
Halt irgendwas was man abfragen könnte.PS: Hat Quincy (TV-Serie) nicht immer so ein Teil benutzt?
-
Hab gelesen, dass es mit MS Telnet eh nicht möglich ist.
Probier mal das Programm "Console telnet" -
Möglicherweise musst du zusätlich STDErrRead benutzen.
Außerdem sollte wohl kein sleep in der while schleife sein.
-
hm, gute frage, kann mir fast nicht vorstellen, dass es wirklich viel arbeit ist.
vllt verrätst du welches programm du steuern willst. -
könnte ich. Hatte aber eine Lösung ohne externe Programme im Sinn. psshutdown und shutdown haben ein fast identisches Verhalten, daher scheints mir sinnvoller dass programm zu nehmen was schon bei windows dabei ist.
-
schonmal den namen der vhd datei, die automatisch eingebunden wird, in der registry suchen lassen?
Liefert vllt WMI die erforderliche Information?
-
Hab bis jetzt immer noch keine Lösung, habe allerdings auf irgendeiner Seite gelesen, dass die Remote-WMI Funktionen wegen Sicherheitsbedenken wohl stark eingeschränkt worden sind und dementsprechend nur mit einigem Konfigurationsaufwand wieder "aktiviert" werden können.
Werde daher wohl auf das Programm "shutdown.exe" im system32 Ordner ausweichen. Das funktioniert auf Anhieb.
(Leider ist das Fehlerhandling bei externen Kommandozeilen Programmen recht aufwendig)Ich denke, dass der Code prinzipiell richtig ist, hab ein Beispiel für VB umgeschrieben.
-
Versuche folgendes Skript ans laufen zu bringen.
Spoiler anzeigen
[autoit]; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Name...........: RemoteShutdown
; Description ...: Fährt einen (Remote)Computer herunter
; Syntax.........: RemoteShutdown($sComputer, $iShutdownOption, $sUser, $sPassword[, $sDomain])
; Parameters ....: $sComputer - Computername
; $iShutdownOption - Art des Herunterfahrens, siehe Remarks
; $sUser - Benutzerkonto mit administrativen Rechten
; $sPassword - Passwort des Benutzers
; $sDomain - Optional: Domäne der der Benutzer angehört, falls nciht angegeben wird $sComputer benutzt
; Return values .: Success - 1
; Failure - 0, sets @error to:
; |1 - Fehler beim Erstellen eines SWbemLocator-Objektes
; |2 - Fehler beim Verbinden zum Computer
; |3 - Fehler beim Erstellen eines WMI-Objektes
; |4 - Die WMI-Abfrage lieferte ein leeres Ergebnis zurück
; |5 -
; Author ........: Bitboy
; Modified.......:
; Remarks .......: Mögliche Parameter für $iShutdownOption sind (identisch zur AutoIt-Funktion "Shutdown"):
; 0 - Abmelden
; 4 - Abmelden erzwingen (0 + 4)
; 1 - Herunterfahren
; 5 - Herunterfahren erzwingen (1 + 4)
; 2 - Neustart
; 6 - Neustart erzwingen (2 + 4)
; 8 - Ausschalten
; 12 - Ausschalten erzwingen (8 + 4)
;
; Port 135 TCP darf auf dem Zielsystem nicht durch eine Firewall blockiert werden
; Link ..........: http://msdn.microsoft.com/en-us/library/…v=VS.85%29.aspx
; ===============================================================================================================================
Func RemoteShutdown($sComputer, $iShutdownOption, $sUser, $sPassword, $sDomain="")
Local $objSWbemLocator, $objSWbemServices, $objWMIService, $colItems, $objItemIf $sDomain = "" Then $sDomain = $sComputer
[/autoit] [autoit][/autoit] [autoit]
;Verbindung zum lokalen Computer führt zu Fehler
If $sComputer <> @ComputerName Then
$objSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
If @error Then Return SetError(1,0,0)
$objSWbemServices = $objSWbemLocator.ConnectServer($sComputer, "root\CIMV2", $sDomain & "\" & $sUser, $sPassword)
If @error Then Return SetError(2,0,0)$objSWBemServices.Security_.ImpersonationLevel = 3
[/autoit] [autoit][/autoit] [autoit]
EndIf
$objWMIService = ObjGet("winmgmts:\\" & $sComputer & "\root\CIMV2")
If @error Then Return SetError(3,0,0)
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", 0x10 + 0x20)If IsObj($colItems) Then
[/autoit]
For $objItem In $colItems
Return $objItem.Win32Shutdown($iShutdownOption)
Next
Else
Return SetError(4,0,0)
EndIf
EndFuncLeider "stürzt" es immer mit folgender Fehlermeldung ab:
Neu AutoIt v3 Script (2).au3 (40) : ==> The requested action with this object has failed.:
$objSWbemServices = $objSWbemLocator.ConnectServer($sComputer, "root\CIMV2", $sDomain & "\" & $sUser, $sPassword)
$objSWbemServices = $objSWbemLocator.ConnectServer($sComputer, "root\CIMV2", $sDomain & "\" & $sUser, $sPassword)^ ERRORDazu hab ich 2 Fragen
1) Wie fängt man den Fehler sauber ab?
2) Wieso funktioniert das nicht? -
nein psexec benötige ich ja nur auf meinem Arbeitsrechner.
Von dort aus stellt es eine Verbindung zum Zielrechner her, kopiert das kompilierte Skript und führt es aus.Prinzipiell könnte man auch auf das Skript komplett verzichten und die MBRWiz.exe durch psexec gleich ausführen lassen.
Hab es eher aus Gewohnheit als AutoIt-Skript gemacht und da muss über fileinstall die MBRWiz.exe natürlich mitgeliefert werden.
Naja, außerdem hab ich so im Quellcode die Parameter stehen falls ich mal die Bedeutung mal vergesse. -
Also ein normarler Rechner verhält sich nicht anders als die VM.
Kurz gesagt: Funktioniert.Hier mal mein benutztes Skript:
[autoit];################################################
[/autoit][autoit][/autoit][autoit]
;# RemoteImage V 1.0
;################################################FileInstall("C:\Setups\MBRWiz.exe", @TempDir & "\MBRWiz.exe", 1)
[/autoit][autoit][/autoit][autoit]
;Benutzte Parameter
;Disk=0 : Erste Festplatte
;Wipe=mbr : Masterboot Record löschen
;Shutdown=2 : Neustart erzwingen
;Confirm : Sicherheitsabfrage bestätigenRun(@TempDir & "\MBRWiz.exe /Disk=0 /Wipe=mbr /Shutdown=2 /Confirm", @TempDir, @SW_HIDE)
[/autoit]
ExitDas Skript wurde mit PSEXEC übers netzwerk auf den Rechner kopiert und ausgeführt.
-
Ganz genau das war das ziel, neu installieren ohne durch die gegend laufen.
Das mit dem Gewicht wäre eher sogar positiv, zu meinen mageren 60 Kilo kann ruhig etwas dazuScreenshots von der VM kann ich gerne machen, allerdings sieht man da nichts sehr spannendes.