Thema: Delphi Schon wieder Shutdown XP

Einzelnen Beitrag anzeigen

Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#16

Re: Schon wieder Shutdown XP

  Alt 8. Dez 2003, 19:13
Hallo Freunde ,

ich hab auch ein kleines Problemchen mit dem Code...

hab folgenden Code zum herunterfahren benutzt:

Delphi-Quellcode:
function Tform1.ExitWin(flag : word): Boolean;
var vi : TOSVersionInfo;
    hToken : THandle;
    tp : TTokenPrivileges;
    h : DWord;
begin
  //result := false;
  vi.dwOSVersionInfoSize:=SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    // Achtung bei Delphi 2 muß @hToken stehen ...
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hToken);
    LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    h := 0;
    AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^,h);
    CloseHandle(hToken);
    result := ExitWindowsEx(flag,0);
    Application.Terminate;
  end
  else // Windows 95
  begin
    Result := ExitWindowsEx(flag,0);
    Application.Terminate;
  end;
end;
bei mir (WinME) klappt das auch wunderbar, aber bei WinXP klappt es gar nicht, da das Prog dann abschmiert....
woran kann das liegen? verwende ich falsche flags oder sowas?
ich hab EWX_POWEROFF or EWX_FORCEIFHUNG benutzt.

MfG Lefko.

PS: und wieso beendet sich das prog nicht noch schnell, nachdem es den befehl zum runterfahren gegeben hat? ist irgendwie doof, geht das nicht zu machen?
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat