Einzelnen Beitrag anzeigen

DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#1

Windows-Shutdown mittels InitiateSystemShutdown ohne installieren von Windows-Updates

  Alt 17. Feb 2015, 11:53
Hallo,

ich habe eine Funktion, die Windows mittels InitiateSystemShutdown herunterfährt und diesen Vorgang auch erzwingt, unabhängig von den offenen Applikationen. Da dieser Shutdown allerdings bei 10 Prozent Restladung der Notebook-Batterie stattfinden soll, ist es nicht in Ordnung, wenn Windows die inzwischen im Hintergrund heruntergeladenen Updates während des Shutdowns installieren möchte - dafür könnte die Restladung nicht ausreichen.

Daher nun die Frage, wie ich möglichst mit der gleichen Funktion InitiateSystemShutdown den Shutdown durchführen kann, ohne eventuell heruntergeladene Windows-Updates zu installieren? Im Startmenü existiert so eine Option ja, da stelle ich mir vor, dass es einen entsprechenden API-Aufruf dafür geben muss.

Vielen Dank für Eure Hilfe.

Delphi-Quellcode:
function 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 beim Windows-Shutdown aufgetreten.') 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 beim Windows-Shutdown aufgetreten.') else
      begin
        Result:=InitiateSystemShutdown(PChar(Computer), PChar(Msg), Time, Force, Reboot);
        if Result = False then
        ShowMessage('Fehler beim Windows-Shutdown aufgetreten.');
      end;
    end else ShowMessage('Fehler beim Windows-Shutdown aufgetreten.');
  end;
end;
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat