title image


Smiley NT-System?
Hi,

bei 98/ME kannst du die Funktion ExitWindowEx direkt verwenden. Bei WinNT (wahrsch. auch bei W2000 und XPprof) müssen vorher die entsprechenden Sicherheitattribute gesetzt werden.



Für NT habe ich mal folgende Routine geschrieben:



function ExitWindows(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 begin

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

result := ExitWindowsEx(flag,0);

end;



Als Übergabewert kannst du die Werte wie in ExitWindowsEX (also EWX_LOGOF ...) verwenden.

Für andere OS musst du evtl. die Zeile

vi.dwPlatformId = VER_PLATFORM_WIN32_NT

anpassen. Aber ohne Gewähr!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: