Kod: Tümünü seç
Procedure TGGenel.Set_Bil_Kapat(Value: integer; oylesine: Boolean);
function SetPrivilege(privilegeName: string; enable: boolean): boolean;
var
tpPrev,
tp : TTokenPrivileges;
token : THandle;
dwRetLen : DWord;
begin
result := False;
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, token);
tp.PrivilegeCount := 1;
if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID) then
begin
if enable then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;
dwRetLen := 0;
result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev, dwRetLen);
end;
CloseHandle(token);
end;
begin
if Oylesine then begin
SetPrivilege('SeShutdownPrivilege', true);
case value of
1: ExitWindowsEx(EWX_FORCE, 0);
2: ExitWindowsEx(EWX_LOGOFF, 0);
3: ExitWindowsEx(EWX_POWEROFF, 0);
4: ExitWindowsEx(EWX_REBOOT, 0);
5: ExitWindowsEx(EWX_SHUTDOWN,0);
end;
SetPrivilege('SeShutdownPrivilege', False);
end;
end;