function HandleShut(CMD:UINT):boolean;
const SE_SH_N='SeShutdownPrivilege';
var hT:THandle;
tkp:TTokenPrivileges;
tkpo:TTokenPrivileges;
zero:DWORD;
begin
Result:=False;
if WinID=VER_PLATFORM_WIN32_NT then
begin
zero:=0;
if not OpenProcessToken(GetCurrentProcess,Acc,hT) then exit;
if not LookupPrivilegeValue(nil,SE_SH_N,tkp.Privileges[0].Luid)then Exit;
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hT,False,tkp,SizeOf(TTokenPrivileges),tkpo,zero);
if Boolean(GetLastError) then Exit;
End;
Result:=ExitWindowsEx(CMD,0);
end;
function ExShutDown(Force:boolean=true):boolean;
Begin
if Force Then Result:=HandleShut(EWX_SHUTDOWN or EWX_FORCE) else Result:=HandleShut(EWX_SHUTDOWN);
End;
Проблема с WinApi, функция перезагрузки
Как сделать перезагрузку?
ЗЫ. (EWX_FORCE,0), (EWX_REBOOT) тоже не помогают.
Кстати,у меня такая же проблема.Только завершение сеанса у меня происходит,когда оба параметра Div 4=0.А чем тебя не прёт ExitWindows?Тем,что не во всех виндах она есть(кстати,странно,почему не во всех виндах есть эта замечтательная функция)?
У меня вроде все работает,