鱼C论坛

 找回密码
 立即注册
查看: 2418|回复: 6

[技术交流] Windows关机程序

[复制链接]
发表于 2016-1-28 22:17:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 康小泡 于 2016-1-29 16:56 编辑

  1. Windows关机程序

  2. 使用:
  3. 1. 复制可执行文件快捷方式
  4. 2.在CmdShell下执行

复制代码



2016-01-28_221232.png

2016-01-28_221559.png
  1. #include <TCHAR.H>

  2. #include <Windows.h>
  3. #define EWX_FORCEIFHUNG     0x00000010

  4. BOOL EnableShutDownPriv();
  5. BOOL ReSetWindows(DWORD dwFlags, BOOL bForce);



  6. int WINAPI WinMain(HINSTANCE hInstance,      // handle to current instance
  7.                                    HINSTANCE hPrevInstance,  // handle to previous instance
  8.                                    LPSTR lpCmdLine,          // command line
  9.                                    int nCmdShow)             // show state   
  10. {
  11.         if (_tcscmp(lpCmdLine, ("/r")) == 0)
  12.         {
  13.                 ReSetWindows(EWX_REBOOT, FALSE);
  14.         }
  15.         else if (_tcscmp(lpCmdLine, ("/s")) == 0)
  16.         {
  17.                 ReSetWindows(EWX_SHUTDOWN, FALSE);
  18.         }
  19.         else if (_tcscmp(lpCmdLine, ("/l")) == 0)
  20.         {
  21.                 ReSetWindows(EWX_LOGOFF, FALSE);
  22.         }

  23.         return 0;
  24. }


  25. BOOL EnableShutDownPriv()
  26. {
  27.         HANDLE hToken = NULL;
  28.         TOKEN_PRIVILEGES tkp = {0};
  29.        
  30.         //
  31.         if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  32.         {
  33.                 return FALSE;
  34.         }
  35.        
  36.         //
  37.         if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid))
  38.         {
  39.                 CloseHandle(hToken);
  40.                 return FALSE;
  41.         }
  42.        
  43.         tkp.PrivilegeCount = 1;
  44.         tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  45.        
  46.         //
  47.         if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL))
  48.         {
  49.                 CloseHandle(hToken);
  50.                 return FALSE;
  51.         }
  52.        
  53.        
  54.         return TRUE;
  55. }


  56. BOOL ReSetWindows(DWORD dwFlags, BOOL bForce)
  57. {
  58.         // Check the parameter
  59.         if (dwFlags != EWX_LOGOFF && dwFlags != EWX_REBOOT && dwFlags != EWX_SHUTDOWN)
  60.         {
  61.                 return FALSE;
  62.         }
  63.        
  64.         // Get the operation system version
  65.         OSVERSIONINFO osvi = {0};
  66.         osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

  67.         if (!GetVersionEx(&osvi))
  68.         {
  69.                 return FALSE;
  70.         }

  71.         if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
  72.         {
  73.                 EnableShutDownPriv();
  74.         }       

  75.         if (bForce != FALSE)
  76.         {
  77.                 dwFlags = dwFlags | EWX_FORCE;
  78.         }
  79.         else
  80.         {
  81.                 dwFlags = dwFlags | EWX_FORCEIFHUNG;
  82.         }

  83.        
  84.         return ExitWindowsEx(dwFlags, 0);
  85. }
复制代码



SDKTest.rar (2.38 KB, 下载次数: 7)

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +8 收起 理由
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!
康小泡 + 5 + 5 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-29 17:08:09 | 显示全部楼层
谢谢分享。 有点小收获。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-30 23:52:40 | 显示全部楼层
康小泡 发表于 2016-1-29 17:08
谢谢分享。 有点小收获。

你在成都360还是北京360,到时候说不定做同事呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-31 10:07:24 | 显示全部楼层
狂潮丶 发表于 2016-1-30 23:52
你在成都360还是北京360,到时候说不定做同事呢。

北京哇,真的哇?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-31 17:29:20 | 显示全部楼层
康小泡 发表于 2016-1-31 10:07
北京哇,真的哇?

只是有可能 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-31 21:26:09 | 显示全部楼层

如果你要来记得和我联系啊。你是这里毕业吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-2 07:03:06 | 显示全部楼层
康小泡 发表于 2016-1-31 21:26
如果你要来记得和我联系啊。你是这里毕业吗?

好的,如果我来的话,我会联系你的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表