Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
Delphi XE2 Professional
|
AW: Rechner Herunterfahren geht nicht
14. Aug 2013, 13:07
Hallo,
ich nutz folgenden Code um runterzufahren, etc., und das ohne Probleme.
Delphi-Quellcode:
function ExitWindows(RebootParam: Longword): Boolean;
//mögliche RebootParam:
//EWX_SHUTDOWN or EWX_FORCE = shutdown
//EWX_REBOOT or EWX_FORCE = reboot
//EWX_LOGOFF or EWX_FORCE = logoff
//
//EWX_FORCE - Die aktiven Prozesse werden zwangsweise und ohne Rückfrage beendet.
var
TTokenHd : THandle;
TTokenPvg : TTokenPrivileges;
cbtpPrevious : DWORD;
rTTokenPvg : TTokenPrivileges;
pcbtpPreviousRequired : DWORD;
tpResult : Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
If Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, TTokenHd);
If tpResult then
begin
tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
If tpResult then
AdjustTokenPrivileges(TTokenHd, false, TTokenPvg, cbtpPrevious,
rTTokenPvg, pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
Aufruf:
Delphi-Quellcode:
//Benutzer abmelden
ExitWindows(EWX_LOGOFF or EWX_FORCE)
//Windows neu starten
ExitWindows(EWX_REBOOT or EWX_FORCE)
//Windows herunterfahren
ExitWindows(EWX_SHUTDOWN or EWX_FORCE)
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
|
|
Zitat
|