Hallo,
zurzeit fahre ich mein Windows recht zuverlässig über folgende
API-Funktion herunter:
Delphi-Quellcode:
FUNCTION TMainform.WindowsShutDown(Computer : STRING; Msg : STRING; Time: Word; Force : Boolean; Reboot: Boolean) : Boolean;
VAR rl, hToken : Cardinal;
tkp : TOKEN_PRIVILEGES;
BEGIN
Result:=False;
IF NOT OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES OR TOKEN_QUERY, hToken) THEN ShowMessage('Fehler') ELSE
BEGIN
IF LookupPrivilegeValue(NIL, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) THEN
BEGIN
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount:=1;
AdjustTokenPrivileges(hToken, False, tkp, 0, NIL, rl);
IF GetLastError <> ERROR_SUCCESS THEN ShowMessage('Fehler') ELSE
BEGIN
Result:=InitiateSystemShutdown(PChar(Computer), PChar(Msg), Time, Force, Reboot);
IF Result = False THEN ShowMessage('Fehler');
END;
END ELSE ShowMessage('Fehler');
END;
END;
Das funktioniert eigentlich immer. Nun habe ich das Problem, dass Windows-Update manchmal Updates herunterlädt (was ja auch so gewollt ist) und diese beim Shutdown mitinstalliert. Das möchte ich aber unterbinden, da der Zeitpunkt des Shutdown bspw. bei Notebooks mit 5 oder 10 Prozent Batterie-Restladung zu viel Zeit in Anspruch nimmt. Wie kann ich das automatische Installieren der Updates für diesen einen Shutdown unterbinden ? Geht das überhaupt mit meinem Quellcodeansatz ?
Danke für die Antworten.