VC++下实现系统关机、重启
2015-06-30 16:57
483 查看
关机调用:
文章来源:http://dqifa.blog.163.com/blog/#m=0&t=1&c=fks_095066086083081065092081074071093084084075087080083
MyExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF);
重启调用:
MyExitWindowsEx(EWX_REBOOT | EWX_FORCE);
具体实现:
BOOL IsWIN32_NT()
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof OSVERSIONINFO;
GetVersionEx(&osv);
return osv.dwPlatformId == VER_PLATFORM_WIN32_NT;
}
BOOL MyExitWindowsEx(UINT uFlags)
{
if(IsWIN32_NT())
{
HANDLE hProcess, hToken;
TOKEN_PRIVILEGES Privileges;
hProcess = GetCurrentProcess();
OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &Privileges.Privileges[0].Luid);
Privileges.PrivilegeCount = 1;
Privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &Privileges, 0, (PTOKEN_PRIVILEGES)NULL, NULL);
}
return ExitWindowsEx(uFlags, 0);
}
文章来源:http://dqifa.blog.163.com/blog/#m=0&t=1&c=fks_095066086083081065092081074071093084084075087080083
MyExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF);
重启调用:
MyExitWindowsEx(EWX_REBOOT | EWX_FORCE);
具体实现:
BOOL IsWIN32_NT()
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize = sizeof OSVERSIONINFO;
GetVersionEx(&osv);
return osv.dwPlatformId == VER_PLATFORM_WIN32_NT;
}
BOOL MyExitWindowsEx(UINT uFlags)
{
if(IsWIN32_NT())
{
HANDLE hProcess, hToken;
TOKEN_PRIVILEGES Privileges;
hProcess = GetCurrentProcess();
OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &Privileges.Privileges[0].Luid);
Privileges.PrivilegeCount = 1;
Privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &Privileges, 0, (PTOKEN_PRIVILEGES)NULL, NULL);
}
return ExitWindowsEx(uFlags, 0);
}
相关文章推荐
- C++强制类型转换
- 最小二乘法拟合多项式原理以及c++实现
- C++自增和自减运算符(--和++)
- C++编程中虚函数的作用
- 牛客网(c++专项练习)
- C++ 虚函数表解析
- (转)C++常用函数汇总
- GCC单独编译host/examples/ tx_waveforms.cpp
- C++ Primer Plus 第10章 对象和类
- C++算术运算符与算术表达式
- C++的运算符
- C/C++预处理 ISO/ANSI C标准译文与注解
- C++中this指针的用法详解
- C++常变量
- Sum Root to Leaf Numbers : 精简实现方式
- C++变量(C++变量定义、变量赋值、命名规则)
- 【C语言】求两个数中不同的位的个数
- KMP算法——C++优化实现
- 【C语言】判断一个数是否为2的n次方
- 【C语言】判断一个数的奇偶(位操作)