Тема: Shutdown под XP
Показать сообщение отдельно
Старый 20.03.2006, 21:31   #2   
Форумдец
 
Сообщений: 5,285
Регистрация: 07.06.2004

$@#Y@ вне форума Не в сети
Отвечу сам себе:
Function SetPrivilege(aPrivilegeName: String; aEnabled: Boolean ): Boolean;
Var TPPrev,
TP: TTokenPrivileges;
Token: THandle;
dwRetLen: DWord;
Begin
Result:=False;
if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
Token) then Exit;
TP.PrivilegeCount:=1;
IF LookupPrivilegeValue(nil,PChar(aPrivilegeName),TP. Privileges[0].LUID ) then
Begin
IF aEnabled then TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED
else TP.Privileges[0].Attributes:=0;
dwRetLen:= 0;
Result:=AdjustTokenPrivileges(Token,False,TP,SizeO f(TPPrev),TPPrev,dwRetLen);
End;
CloseHandle(Token);
End;
begin
if TimeToStr(Time) = TimeEdit.Text then
begin
SetPrivilege('SeShutdownPrivilege',True);
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE,0);
end;
  Ответить с цитированием