Thema: Delphi Windows XP beenden

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Windows XP beenden

  Alt 25. Dez 2003, 19:54
Nein, @Matze. Ich wollt´ halt nur meinen (Optimierungs-)Senf zu der von dir geposteten Routine aus der Code-Lib dazugeben. Meine private, die ich nutze, sieht nämlich so aus:
Delphi-Quellcode:
procedure CallLogOffSequence(ExitCode: dword);
var
  os : TOSVersionInfo;
  Token : THandle;
  tkp : TTokenPrivileges;
begin
  os.dwOSVersionInfoSize := sizeof(os);
  GetVersionEx(os);

  if(os.dwPlatformId = VER_PLATFORM_WIN32_NT) then begin
    if(OpenProcessToken(GetCurrentProcess,
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token)) then
    try
      if(not LookupPrivilegeValue(nil,'SeShutdownPrivilege',
        tkp.Privileges[0].Luid)) then exit;

      tkp.PrivilegeCount := 1;
      tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

      AdjustTokenPrivileges(Token,false,tkp,
        0,PTokenPrivileges(Nil)^,PDWord(Nil)^);

      if(GetLastError <> ERROR_SUCCESS) then exit;
    finally
      CloseHandle(Token);
    end;
  end;

  ExitWindowsEx(ExitCode,0);
end;
Wie du siehst, rufe ich "ExitWindowsEx" nur einmal auf.
  Mit Zitat antworten Zitat