随笔 - 223  文章 - 0  评论 - 77  阅读 - 68万

一些好玩但很少用到的小程序

1、强制系统关机

功能:让系统强制关机;

ExitWindowsEx 这个 API 可以关闭系统,但是请注意这个函数需要进程具有 SE_SHUTDOWN_NAME 特权(13-18行),另外就像我们很多时候关机会提示关闭一些应用程序一样,不加 EWX_FORCE 标志也会有交互式提示,如果想要强制关闭就加上标志 EWX_FORCE。

复制代码
 1 #include <windows.h>
 2 
 3 bool MySystemShutDown()
 4 {
 5    HANDLE hToken;
 6    TOKEN_PRIVILEGES tkp;
 7 
 8    //获取进程标志
 9    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
10        return false;
11 
12    //获取关机特权的LUID
13    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
14    tkp.PrivilegeCount = 1;
15    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
16 
17    //获取这个进程的关机特权
18    AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
19    if (GetLastError() != ERROR_SUCCESS) return false;
20 
21    // 强制关闭计算机
22    if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
23        return false;
24    return true;
25 }
26 
27 int main()
28 {
29    MySystemShutDown();
30    return 0;
31 }
复制代码

 

posted on   Arthurian  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2017-10-03 浅谈C#中的值类型和引用类型
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示