Hi
Ich glaube du hast vergessen die Funktion zu benutzen
Delphi-Quellcode:
function ExWindows(
const AQuestion:
string; flag: word): Boolean;
var
vi : TOSVersionInfo;
hToken : THandle;
tp : TTokenPrivileges;
h : DWord;
begin
result := false;
if Aquestion='
'
then
vi.dwOSVersionInfoSize:=SizeOf(vi);
GetVersionEx(vi);
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT
then
begin
// Windows NT
// 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);
end
else
begin
Result := ExitWindowsEx(flag,0);
end;
end;
und dann so benutzen:
Delphi-Quellcode:
ExWindows('', ewx_poweroff); //Beenden
ExWindows('', ewx_reboot ); //Neustart
ExWindows('', ewx_logoff ); //Logoff
bei mir hats so funktioniert
hoffe das es bei dir nun auch was wird ;]