快速关机[原创]

// 以下代码实现在NT以上系统的快速关机,关机速度在2秒以内,不保存资料,不伤硬盘
typedef
enum _SHUTDOWN_ACTION {<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     ShutdownNoReboot,      // 关机

     ShutdownReboot,         // 重启

     ShutdownPowerOff      // 这个没有试,有心的人试下

}SHUTDOWN_ACTION;

 

DWORD (__stdcall *NtShutdownSystem)(SHUTDOWN_ACTION);

 

VOID ShutDown()

{

     HANDLE hToken;
     // 得到关机权限 

     if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken))

     {

         TOKEN_PRIVILEGES tkp;

 

         LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);

        

         tkp.PrivilegeCount = 1;

         tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

 

         AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);

         CloseHandle(hToken);

     }

 

     // 加载未公开API,强行关机(快速)

     HMODULE mod;

     mod = LoadLibrary("ntdll.dll");

     NtShutdownSystem = (DWORD(__stdcall *)(SHUTDOWN_ACTION))GetProcAddress(mod, "NtShutdownSystem");

 

     NtShutdownSystem(ShutdownNoReboot);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值