System - Windows(2000) beenden
-
Kann mir jemand sagen wie ich Windows 2000 per Code herunterfahren kann. Mit der ExitWindows-Funktion von Windows 98 klappt das leider nicht.
mfg
Silver[ Dieser Beitrag wurde am 27.11.2002 um 23:06 Uhr von Jansen editiert. ]
-
Da ein alter Beitrag zum selben Thema leider galoppierendem Speichermangel zum Opfer fiel, hier nochmal ein Beispielcode:
void __fastcall TForm1::BShutdownNTClick(TObject *Sender) { HANDLE token; TOKEN_PRIVILEGES tokenpriv; // Token für diesen Prozess holen if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)==0) { ShowMessage("Fehler beim OpenProcessToken"); return; } // LUID für die Shutdown Privilege holen LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokenpriv.Privileges[0].Luid); tokenpriv.PrivilegeCount=1; tokenpriv.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; // Shutdown privilege für diesen Prozess setzen if(AdjustTokenPrivileges(token, false, &tokenpriv, 0, (PTOKEN_PRIVILEGES)NULL, 0)==NULL) { ShowMessage("Fehler bei AdjustTokenPrivileges"); return; } // Windows beenden und Rechner ausschalten if(ExitWindowsEx(EWX_LOGOFF | EWX_POWEROFF, NULL)==NULL) { ShowMessage("Fehler beim ExitWindowsEx"); return; } }
-
Bei mir macht Win2000 lediglich einen Neustart mit dieser Funktion!
Crush
-
Vielleicht kann Dein Rechner die Abschaltfunktion nicht
Bei mir liefs einwandfrei.-------------------------------------------------------------------
Nachtrag (Posting von <Redhawk> )
So. Ich habs rausgefunden.
Für WIN2000:// Windows beenden und Rechner ausschalten if(ExitWindowsEx(EWX_LOGOFF | EWX_POWEROFF, NULL)==NULL) { ShowMessage("Fehler beim ExitWindowsEx"); return; }
Für WINNT4
// Windows beenden und Rechner ausschalten if(ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, NULL)==NULL) { ShowMessage("Fehler beim ExitWindowsEx"); return; }
Müßte funktionieren.
-------------------------------------------------------------------
[ 20.09.2001: Beitrag editiert von: Peter ][ Dieser Beitrag wurde am 20.10.2002 um 12:54 Uhr von Jansen editiert. ]