Показать сообщение отдельно
  #6  
Старый 07.11.2008, 19:51
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
Стрелка

Вырубить:
http://www.sources.ru/delphi/system/..._windows.shtml
Как завершить сеанс работы или перезагрузить Windows NT:
Код:
function SetPrivilege(aPrivilegeName : string;  
                      aEnabled : 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( 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,  
                                    SizeOf( TPPrev ),  
                                    TPPrev,dwRetLen );  
  end;  

  CloseHandle( Token );  
end;  


function WinExit( iFlags : integer ) : boolean;  
//   возможные флаги: 
//   EWX_LOGOFF  
//   EWX_REBOOT  
//   EWX_SHUTDOWN  
begin  
  Result := True;  
  if( SetPrivilege( 'SeShutdownPrivilege', true ) ) then  
  begin  
    if( not ExitWindowsEx( iFlags, 0 ) )then  
    begin  
      Result := False;  
    end;  
    SetPrivilege( 'SeShutdownPrivilege', False )  
  end  
  else  
  begin  
    Result := False;  
  end;  
end; 
Все взято с исходников...
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием