VC 之关机程序的问题
来源:互联网 发布:网络安全与网络文明 编辑:程序博客网 时间:2024/05/28 15:33
关机程序,运行之后在屏幕上显示“可以安全关闭电源”的字样,但是并未切断电源。
因为旧版的电源不支持ATX,所以关机之后会出现那些字样。
解决方法一:
把注册表中的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下的PowerdownAfterShutdown键设置值为1即可。
解决方法二:
HANDLE hToken; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if(!ATX) ExitWindowsEx(EWX_SHUTDOWN| EWX_FORCE, 0); else ExitWindowsEx(EWX_POWEROFF| EWX_FORCE, 0);
说明:
判断电源是否支持ATX的代码已省略
解决方法三:
参考代码
BOOL fResult;TOKEN_PRIVILEGES tkp;HANDLE hToken; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { MessageBox( "OpenProcessToken failed! "); return FALSE; } 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); //调整获得的权限 if (GetLastError() != ERROR_SUCCESS) { MessageBox( "AdjustTokenPrivileges enable failed! "); return FALSE; } fResult =InitiateSystemShutdown( NULL, // 要关的计算机用户名 "由于系统不稳定,WINDOWS将在上面的时间内关机,请做好保存工作! ", // 显示的消息 10, // 关机所需的时间 TRUE, // ask user to close apps style); //设为TRUE为重起,设为FALSE为关机 if(!fResult) { MessageBox( "InitiateSystemShutdown failed. "); return FALSE; } tkp.Privileges[0].Attributes = 0; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0); if (GetLastError() != ERROR_SUCCESS) { MessageBox( "AdjustTokenPrivileges disable failed. "); return FALSE; } if (style) { return ExitWindowsEx(EWX_REBOOT|EWX_FORCE|EWX_POWEROFF,0); } else { return ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE|EWX_POWEROFF,0); }
- VC 之关机程序的问题
- 定时关机程序源代码 VC MFC 权限问题
- vc实现关机开机程序
- 搞怪的关机程序
- 关机的小程序
- 最简单的vc关机
- 关机蓝屏的问题
- MFC和VC++写的电脑关机小程序(源码+下载)
- VC 关机
- bat的定时关机程序
- 简单的Linux关机程序
- 简单的Linux关机程序
- 批处理写的关机程序
- 让系统关机的代码(vc)
- 最简单的vc关机代码
- VC拦截XP关机的方法
- vc操作excel程序退出的问题
- 关于vc++ 2005 发布程序的问题
- android 开发中遇到的一个小问题
- mt6573集成MCP nandflash的详细方法
- Android中Context
- 计划任务
- mtk android MT6573方案 power key 长按8s 关机功能实现
- VC 之关机程序的问题
- linux driver 中断下半部实现方法总结
- 3.3.3 命名对象
- oracle数据库中创建、查询、删除、修改序列
- 如何使网页播放视频
- POJ 3683 2-sat 输出解
- Jquery Datepicker使用
- 嵌入式交叉编译开发环境的搭建步骤(arm-linux)
- Android自定义SeekBar滑动条