Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Перезагрузка компьютера   Найти похожие ветки 

 
Биритм   (2007-01-11 21:26) [0]

Подскажите есть ли такая функция которая перезагружалабы компьютер


 
tesseract ©   (2007-01-11 21:49) [1]

ExitWindowsEx(EWX_SHUTDOWN,EWX_FORCE)


 
kaZaNoVa ©   (2007-01-11 22:39) [2]

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;
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExit(EWX_REBOOT);
end;


 
Anatoly Podgoretsky ©   (2007-01-11 22:52) [3]

> kaZaNoVa  (11.01.2007 22:39:02)  [2]

Откуда этот вечно кривой код, уже сколько раз встречаю, с данным примером система не перезагрузится и список флагов не полный.


 
Zorro2001 ©   (2007-01-12 03:22) [4]

Я просто сделал dll что бы не переписывать весь код когда он понадобится...

library SysDll;
uses
 Windows,
 Messages,
 SysUtils,
 Variants,
 Classes,
 Graphics,
 Controls,
 Forms,
 Dialogs,
 StdCtrls;

{$R *.res}

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;

function WinExit(flags:integer):boolean;
begin
 if SetPrivilege("SeShutdownPrivilege",True) then
  begin
   ExitWindowsEx(flags,1);
   SetPrivilege("SeShutdownPrivilege", False)
  end;

end;
exports WinExit;

End.


Потом в программе из которой хочеш перегрузить машину, вызываеш функцию WinExit с нужным тебе параметром.


 
Zorro2001 ©   (2007-01-12 03:28) [5]

например так
WinExit(EWX_SHUTDOWN)


 
novill ©   (2007-01-12 09:26) [6]

> [3] Anatoly Podgoretsky ©   (11.01.07 22:52)
> Откуда этот вечно кривой код,


http://delphiworld.narod.ru/


 
Anatoly Podgoretsky ©   (2007-01-12 14:05) [7]

> novill  (12.01.2007 09:26:06)  [6]

А тогда понятно, код гнилой.



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1168539990
Биритм
2007-01-11 21:26
2007.01.28
Перезагрузка компьютера


15-1168013190
Petr V. Abramov
2007-01-05 19:06
2007.01.28
посоветуйте компонент


6-1156418891
Орион
2006-08-24 15:28
2007.01.28
TidTCPServer и HTTP-запросы


15-1168252422
cando
2007-01-08 13:33
2007.01.28
обнаружение врага


15-1167509299
vasIZmax
2006-12-30 23:08
2007.01.28
Распечатать текст программы...