Lukke windows ned (XP)
Dav.Sidder og prøver at lave en rutine, der kan lukke en windows XP ned.
Gøres normalt med api'en ExitWindowsEx (ECX_POWEROFF, 0) - men da det er XP, skal man have rettigheder til at gøre det.
Jeg har fundet følgende kode på nettet:
function DelphiExitsWindows( Flags : Word):Boolean;
var
iVersionInfo: TOSVersionInfo;
iToken : THandle;
iPriveleg : TTokenPrivileges;
iaresult : cardinal;
begin
Result:=FALSE;
FillChar (iPriveleg, SizeOf (iPriveleg), #0);
iVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(iVersionInfo);
if iVersionInfo.dwPlatformId <> VER_PLATFORM_WIN32_NT then
Result:=ExitWindowsEx (Flags, 0)
else
if OpenProcessToken (GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, iToken) then
if LookupPrivilegeValue (NIL,'SeShutdownPrivilege',
iPriveleg.Privileges[0].Luid) then
begin
iPriveleg.PrivilegeCount := 1;
iPriveleg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges (iToken,False,iPriveleg,
Sizeof(iPriveleg),iPriveleg,iaresult) then
Result:=ExitWindowsEx (Flags, 0);
end;
end;
Men koden virker ikke! ExitWindowsEx giver mig en fejl 1314, som er, at jeg ikke har rettigheder til at lukke windows ned, og det fatter jeg jo ikke en hvede af!
Er der een der gør?
