注册表实现windows系统的关机、注销和重启
来源:互联网 发布:必读国学经典知乎 编辑:程序博客网 时间:2024/05/16 19:05
这里我们主要讲的是Windows2000以上的操作。因为在Windows2000以上的操作系统,ExitWindowsEx等函数需要有一定的权限才能运行。所以在调用ExitWindowsEx函数前要获得较高的系统权限。
那么如何才能提高系统权限呢?我们需要用到3个函数:OpenProcessToken、LookupPrivilegeValue、AdjustTokenPrivileges。
下面是Windows2000及以上关机、注销、重启的具体代码:
//关机
void ShutDown(){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//打开当前进程信令
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)){
printf("open ProcessToken error \n");
return;
}
//获取本地唯一标示用于在特定的系统中设置权限
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
//提升方位令牌权限
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
//关机。
//重启:将第一个参数换成EWX_REBOOT|EWX_FORCE
//注销:将第一个参数换成EWX_LOGOFF|EWX_FORCE
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0);
}
//注销
void LogOff()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
return;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);
}
//重启
void Reboot()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
return;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
- 注册表实现windows系统的关机、注销和重启
- C#实现控制Windows系统关机、重启和注销的方法:
- 编程实现Windows关机、重启、注销
- C# 实现 Windows 关机 重启 注销
- 简单实现windows系统普通或强制关机重启注销的功能
- C++ 实现系统注销,重启,关机的方法
- C++ 实现系统注销,重启,关机的方法
- DELPHI中调用API函数ExitWindowsEX可以实现系统的关机,注销,和重启
- golang 调用win32 api 实现windows注销、重启、关机
- windows C++实现注销、重启、关机 logoff reboot shutdown
- C# 实现系统关机、注销、重启、休眠、挂起
- C# 实现系统关机、注销、重启、休眠、挂起
- C#实现系统关机、重启、注销等操作
- VB2005调用API实现注销、关机和重启
- .NET中实现"关机/休眠/重启/注销"的类
- 关机、注销、重启的C++实现 2011.04.22
- MFC中定时关机、重启、注销的实现
- MFC中定时关机、重启、注销的实现
- 设计模式C++实现(9)——享元模式
- Apple NSURL网络错误码
- MFC在其他线程中刷新主对话框中EDIT等控件数据
- 数据结构与算法分析-散列(hashing)
- 深入了解 CSS3 新特性
- 注册表实现windows系统的关机、注销和重启
- 欢迎使用CSDN-markdown编辑器
- python解决接口测试获取手机验证码问题
- 数据结构与算法分析-优先队列 堆(heap)
- 一起ORACLE数据库中数据查询结果不一致问题的排查过程
- 设计移动App的十大技巧
- Kafka(一):基础
- 链表中倒数第k个结点
- IOS 删除不需要的证书