Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181783
  • 博文数量: 18
  • 博客积分: 334
  • 博客等级: 入伍新兵
  • 技术积分: 233
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 14:45
文章分类

全部博文(18)

文章存档

2015年(5)

2013年(7)

2012年(6)

我的朋友

分类: C/C++

2015-12-16 23:45:02


点击(此处)折叠或打开

  1. //提权
  2. BOOL EnableShutDwonPriv()
  3. {
  4.     HANDLE hToken = nullptr;
  5.     TOKEN_PRIVILEGES tkp = {};
  6.     BOOL bRet = FALSE;
  7.     do
  8.     {
  9.         if (!OpenProcessToken(GetCurrentProcess(),
  10.             TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  11.             break;

  12.         if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
  13.             &tkp.Privileges[0].Luid))
  14.             break;

  15.         tkp.PrivilegeCount = 1; // one privilege to set
  16.         tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

  17.         // Get the shutdown privilege for this process.

  18.         AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
  19.             (PTOKEN_PRIVILEGES)NULL, 0);

  20.         if (GetLastError() != ERROR_SUCCESS)
  21.             break;

  22.         bRet = TRUE;

  23.     } while (FALSE);

  24.     if (FALSE == bRet)
  25.     {
  26.         SetLastError(GetLastError());
  27.     }

  28.     if (hToken)
  29.     {
  30.         CloseHandle(hToken);
  31.     }

  32.     return bRet;
  33. }

  34. //操作计算机
  35. BOOL ReSetWindow(DWORD dwFlags)
  36. {

  37.     BOOL bRet = FALSE;
  38.     do
  39.     {
  40.         if (EnableShutDwonPriv())
  41.         {
  42.             if (!ExitWindowsEx(dwFlags, FALSE))
  43.                 break;
  44.         }
  45.         bRet = TRUE;

  46.     } while (FALSE);

  47.     return bRet;
  48.     //调用exitwindows来关闭系统
  49. }

阅读(1863) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~