为什么我的ExitWindowsEx(EWX_POWEROFF,0)不能关机,Error Code=1314,指定的登录会话不存在。可能已被终止。
解决方案 »
- ShowWindow(SW_SHOWMAXIMIZED); 后恢复窗口原来大小怎么做?
- nsis 制作安装包
- 老是想不通....
- 有关SQL SEVER 2000扩展存储过程的问题~
- CRecordset 如何使用 AddNew()问题
- 怎样把几张图片连起来播放?
- 一个被EXCEL正打开的文件怎么才能以写的方式打开?
- 我使用计算机,当我不用计算机时不关等会儿又用,我希望计算机不要黑屏,也就是屏幕亮的时间长一点,我该怎么做到这一点?
- 我想知道WNDCLASS这种东西都是干什么用的,应该看什么书?
- *重载函数 的返回值与在重载函数中所得到的值不一样!
- 不知道放哪里,就放到人多的地方了
- 一个简单问题……非模态对话框问题
{ if (dwVersion < 0x80000000) // for win2000 or later
{
TOKEN_PRIVILEGES tkp,tkpnewbutignored;
HANDLE hdltokenhandle;
LUID tmpluid;
BOOL rc;
DWORD lbufferneeded;
HANDLE hdlprocesshandle = GetCurrentProcess();
rc = OpenProcessToken(hdlprocesshandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hdltokenhandle);
rc = LookupPrivilegeValue("","SeShutdownPrivilege", &tmpluid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Luid = tmpluid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
rc = AdjustTokenPrivileges(hdltokenhandle,FALSE,&tkp,sizeof(tkpnewbutignored),&tkpnewbutignored, &lbufferneeded);
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0);
}
else
{
ExitWindowsEx(EWX_SHUTDOWN,0); // for win98
}
}
1314的错误是告诉你你没有权限.
解决方法(在ExitWindowsEx函数前加上以下代码):
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);