实现系统注销的代码,在有些情况下不能正常注销,请指教
我用下面所附的代码进行系统注销,但有时会出现这样的情况:我的应用程序没有退出,系统也没有注销,再次点注销也不行,用Windows自带的注销也不行。请问一下代码有什么问题吗?
if(MessageBox("确定要注销"+theApp.m_strUserName+"吗?","注销"+theApp.m_strUserName,MB_OKCANCEL|MB_ICONWARNING)==IDOK)
{
if(GetDocument()->m_nLoginInfo) OnLogLogout();//用户注销
//以下代码用于系统注销
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,NULL,NULL,NULL);
ExitWindowsEx(EWX_LOGOFF|EWX_LOGOFF,0);
}