delphi 强制重启计算机

一、正常关机或重启: 

unit uFuncs;

interface
uses
  windows;
procedure GetPrivilege;
procedure RebootSystem();
implementation
procedure RebootSystem();
begin
  GetPrivilege;
  //initiateSystemShutDown();显示关机提示;
  //ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE+EWX_POWEROFF+EWX_FORCEIFHUNG, 0); //强制关机
  ExitWindowsEx(EWX_REBOOT OR EWX_FORCE or EWX_POWEROFF or EWX_FORCEIFHUNG, 0);  // 重启
end;
procedure GetPrivilege;
var
  NewState:       TTokenPrivileges;
  lpLuid:         Int64;
  ReturnLength:   DWord;
  ToKenHandle:    THandle;
begin
  OpenProcessToken(GetCurrentProcess,
                   TOKEN_ADJUST_PRIVILEGES
                   OR TOKEN_ALL_ACCESS
                   OR STANDARD_RIGHTS_REQUIRED
                   OR TOKEN_QUERY,ToKenHandle);
  LookupPrivilegeValue(nil,'SeShutdownPrivilege',lpLuid);
  NewState.PrivilegeCount:=1;
  NewState.Privileges[0].Luid:=lpLuid;
  NewState.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
  ReturnLength:=0;
  AdjustTokenPrivileges(ToKenHandle,False,NewState,0,nil,ReturnLength);
end;
end.

二、瞬间关机或重启(1秒左右):

//调用ZwShutdownSystem()函数后,会通知硬件驱动保存内核数据,注册表和文件的缓存将会刷新到磁盘上,
//然后将立即重启或关机,未保存的应用程序数据将丢失。
//由于ZwShutdownSystem()通知硬件驱动后是瞬间关机的。为了系统与硬件的安全,
//应使用ExitWindowsEx()进行正常关机。
function RtlAdjustPrivilege(Privilege: ULONG; Enable: BOOLEAN;
           CurrentThread: BOOLEAN; Enabled: PBOOLEAN): DWORD; stdcall; external 'ntdll.dll';
function ZwShutdownSystem(arg: DWORD): BOOLEAN; stdcall; external 'ntdll.dll';
procedure ForceShutdown();
begin
asm
    PUSH ESP
    PUSH 0
    PUSH 1
    PUSH $13
    CALL RtlAdjustPrivilege
    PUSH 0
    CALL ZwShutdownSystem
end;
end;
procedure ForceReboot();
begin
asm
    PUSH ESP
    PUSH 0
    PUSH 1
    PUSH $13
    CALL RtlAdjustPrivilege
    PUSH 1
    CALL ZwShutdownSystem
end;
end;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值