Bah en Delphi ça donne ça avec deux boutons un qui ferme et l'autre qui reboot:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var sTokenIn,sTokenOut : TTOKENPRIVILEGES ;
dwLen : DWORD ;
hCurrentProcess,hToken : THANDLE ;
Luid1 : TLargeInteger ; // LUID ;
begin
// Handle du process en cours
hCurrentProcess := GetCurrentProcess ;
OpenProcessToken (hCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
// valeur du privilege SHUTDOWN
LookupPrivilegeValue(nil,'SeShutdownPrivilege',Luid1) ;
sTokenIn.PrivilegeCount := 1;
sTokenIn.Privileges[0].Luid := Luid1;
sTokenIn.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Ajustement du privilege avec les nouvelles valeurs
AdjustTokenPrivileges ( hToken, FALSE, sTokenIn,sizeof(TTOKENPRIVILEGES),sTokenOut, dwLen);
CloseHandle (hToken);
ExitWindowsEx(EWX_REBOOT {or EWX_FORCE}, 0) ;//Sortie NT
end;
procedure TForm1.Button2Click(Sender: TObject);
var sTokenIn,sTokenOut : TTOKENPRIVILEGES ;
dwLen : DWORD ;
hCurrentProcess,hToken : THANDLE ;
Luid1 : TLargeInteger ; // LUID ;
begin
// Handle du process en cours
hCurrentProcess := GetCurrentProcess ;
OpenProcessToken (hCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
// valeur du privilege SHUTDOWN
LookupPrivilegeValue(nil,'SeShutdownPrivilege',Luid1) ;
sTokenIn.PrivilegeCount := 1;
sTokenIn.Privileges[0].Luid := Luid1;
sTokenIn.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Ajustement du privilege avec les nouvelles valeurs
AdjustTokenPrivileges ( hToken, FALSE, sTokenIn,sizeof(TTOKENPRIVILEGES),sTokenOut, dwLen);
CloseHandle (hToken);
ExitWindowsEx(EWX_SHUTDOWN {or EWX_FORCE}, 0) ;//Sortie NT
end;
end.
Button1: Reboot
Button2: Shutdown