User-Root Geschrieben 31. August 2006 Teilen Geschrieben 31. August 2006 Gibt es da einen einfachen Befehl um den Lokalen PC herunterzufahren? Der Befehl sollte von 2000, XP und 2003 unterstützt werden und Nicht dazu führen, das dann "Sie können den PC jetzt ausschalten" auf dem Bildschirm stehen bleibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 31. August 2006 Teilen Geschrieben 31. August 2006 Private Declare Function ExitWindows Lib "User32" Alias "ExitWindowsEx" _ (ByVal dwOptions As Integer, _ ByVal dwReserved As Integer) As Integer Private Sub quit() ExitWindows(1, &HFFFFS) End Sub Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
User-Root Geschrieben 31. August 2006 Autor Teilen Geschrieben 31. August 2006 Danke, aber wird weder von 2000 noch 2003 ausgeführt. Noch ne Idee? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
afrokalypse Geschrieben 31. August 2006 Teilen Geschrieben 31. August 2006 du könntest shutdown.exe mit entsprechenden parametern von deinem programm aus aufrufen. allerdings weiss ich nicht welche betriebssysteme das unterstützen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 31. August 2006 Teilen Geschrieben 31. August 2006 Private Sub quit() On Error Resume Next Dim objWMI As Object Dim colItems As Object Dim objItem As Object objWMI = GetObject( _ "WinMgmts:{impersonationLevel=impersonate, " & _ "(Shutdown)}!/root/cimv2") colItems = objWMI.ExecQuery( _ "SELECT * FROM Win32_OperatingSystem") For Each objItem In colItems objItem.Shutdown() Next objItem End Sub Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 31. August 2006 Teilen Geschrieben 31. August 2006 Danke, aber wird weder von 2000 noch 2003 ausgeführt. Und was ist die Fehlermeldung? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 1. September 2006 Teilen Geschrieben 1. September 2006 Und was ist die Fehlermeldung? keine! es passiert einfach nix! wobei der benutzerwechsel mit win2000 klappt! der zweite code funktioniert mit win2000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
User-Root Geschrieben 1. September 2006 Autor Teilen Geschrieben 1. September 2006 Hmm, Also mit der WMI geschichte hab ich zwar den PC unter 2000 runtergefahren, Jedoch blieb er dann beim acpi-Poweroff hängen. Ich hab jetz ein kleines workarround genommen: ein aufruf der psshutdown.exe aus den sysinternals. Klappt wunderbar. Trotzdem Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 1. September 2006 Teilen Geschrieben 1. September 2006 Hmm, Also mit der WMI geschichte hab ich zwar den PC unter 2000 runtergefahren, Jedoch blieb er dann beim acpi-Poweroff hängen. Ich hab jetz ein kleines workarround genommen: ein aufruf der psshutdown.exe aus den sysinternals. Klappt wunderbar. Trotzdem Danke. wenn du dich wenigstens ein bißchen eingearbeitet hättest, hättest du herausgefunden, dass man statt shutdown --> Win32Shutdown(12) verwenden kann; und dann klappts auch! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 1. September 2006 Teilen Geschrieben 1. September 2006 keine! es passiert einfach nix! GetLastError liefert keine Fehlermeldung? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 1. September 2006 Teilen Geschrieben 1. September 2006 GetLastError liefert keine Fehlermeldung? ich meinte, wenn man das ausführt: Private Declare Function ExitWindows Lib "User32" Alias "ExitWindowsEx" _ (ByVal dwOptions As Integer, _ ByVal dwReserved As Integer) As Integer Private Sub quit() ExitWindows(1, &HFFFFS) End Sub macht windows schlichtweg nix; was andres hab ich gar ned probiert... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 1. September 2006 Teilen Geschrieben 1. September 2006 was andres hab ich gar ned probiert... Ich habe gefragt, ob die API-Funktion ExitWindowsEx einen Fehler signalisiert und was GetLastError, gleich im Anschluss darauf aufgerufen, zurückliefert. "Es geht nicht" ist keine Fehlerbeschreibung, auf die man sinnvoll antworten kann. Zu dem Code: Der erste Parameter sollte 0x8 sein, im Fall von 0x1 wird das System nicht ausgeschaltet. Ausserdem braucht Dein Prozess laut Dokumentation im PSDK das SE_SHUTDOWN_NAME Privileg. Dieses musst Du Dir über AdjustTokenPrivileges beschaffen. Als zweiten Parameter ist eine Auswahl zwischen 0x4 oder 0x10 (und 0, wenn keine weiteren Angaben gemacht werden sollen) dokumentiert, je nach verwendetet OS. Bitte lies die Dokumentation für genauere Angaben selbst nach. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 2. September 2006 Teilen Geschrieben 2. September 2006 Ich habe gefragt, ob die API-Funktion ExitWindowsEx einen Fehler signalisiert und was GetLastError, gleich im Anschluss darauf aufgerufen, zurückliefert. "Es geht nicht" ist keine Fehlerbeschreibung, auf die man sinnvoll antworten kann. Zu dem Code: Der erste Parameter sollte 0x8 sein, im Fall von 0x1 wird das System nicht ausgeschaltet. Ausserdem braucht Dein Prozess laut Dokumentation im PSDK das SE_SHUTDOWN_NAME Privileg. Dieses musst Du Dir über AdjustTokenPrivileges beschaffen. Als zweiten Parameter ist eine Auswahl zwischen 0x4 oder 0x10 (und 0, wenn keine weiteren Angaben gemacht werden sollen) dokumentiert, je nach verwendetet OS. Bitte lies die Dokumentation für genauere Angaben selbst nach. ich hab ihm doch schon mitlerweile einen funktionsfähigen code geliefert... und ich sagte auch, dass ich kein GetLastError gemacht habe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 2. September 2006 Teilen Geschrieben 2. September 2006 ich hab ihm doch schon mitlerweile einen funktionsfähigen code geliefert... Ich beziehe mich nicht auf das Beispiel unter Verwendung von WMI. Der Aufruf von ExitWindowsEx, so wie Du ihn alleine gepostet hast, reicht nicht. und ich sagte auch, dass ich kein GetLastError gemacht habe... Hättest Du es getan, wäre aufgefallen, dass GetLastError nach em Aufruf von ExitWindowsEx den Fehlercode 1314 zurückliefert. Dies, zusammen mit der Dokumentation von ExitWindowsEx, sollte ausreichen, um das Problem anzugehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k4fu Geschrieben 2. September 2006 Teilen Geschrieben 2. September 2006 Hättest Du es getan, wäre aufgefallen, dass GetLastError nach em Aufruf von ExitWindowsEx den Fehlercode 1314 zurückliefert. Dies, zusammen mit der Dokumentation von ExitWindowsEx, sollte ausreichen, um das Problem anzugehen. welches nicht meines ist.... wenn er sich nicht selbst die mühe macht ist es mir egal! ich debugge doch nicht auch noch für jemanden, wenn er 90% schon auf dem teller serviert bekommt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 2. September 2006 Teilen Geschrieben 2. September 2006 Könntet ihr euch per PN zanken? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.