我的系统是win2oooadv 的,我在一个函数中写下这样的代码:
ExitWindowsEx(EWX_SHUTDOWN,0);意图是
void CMainFrame::OnClose() 中调用此函数。
void CMainFrame::OnAppExit()中也调用此函数,可执行结果是只把应用程序自身关了,我把那数字改成1或2都没用,而在别人机子又可以实现关机的功能。
ExitWindowsEx(EWX_SHUTDOWN,0);意图是
void CMainFrame::OnClose() 中调用此函数。
void CMainFrame::OnAppExit()中也调用此函数,可执行结果是只把应用程序自身关了,我把那数字改成1或2都没用,而在别人机子又可以实现关机的功能。
解决方案 »
- 关于窗口DoModal问题
- 我的程序里循环调用调用cstring::Format()150次,导致缓冲区溢出,请问应该怎么解决
- windows核心编程第五版的代码怎么编译?
- 请问大家,怎样可以更改PE可执行文件的图标?
- VC中copyfile,deletefile使用问题?
- 请问CTreeCtrl怎么响应消息?
- 基于opencv的视频文件读取和运动目标检测与追踪!求大神帮忙看一下程序的主要问题在哪里!
- 请问为什么不能删文章
- 贡献
- >>>>>>为何CDaoQueryDef不知道^^^^^释放内存^^^^^<<<<<<
- 我想问VC里有没有什么函数可以将int转换成CString的?反过来呢?
- 有谁知道这个控件?
http://www.china-askpro.com/msg12/qa12.shtml
Or use function :InitiateSystemShutdown
后Sleep(3000)试试
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if ( g_IsNt )
{
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
TRACE0("OpenProcessToken");
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
TRACE0("AdjustTokenPrivileges");
}
if ( fForce )
{
if ( Type )
{
if ( g_IsNt )
{
ExitWindowsEx(EWX_POWEROFF | EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_REBOOT | EWX_FORCE,0);
}
else
{
if ( Type )
{
if ( g_IsNt )
{
ExitWindowsEx(EWX_POWEROFF,0);
}
else
ExitWindowsEx(EWX_SHUTDOWN,0);
}
else
ExitWindowsEx(EWX_REBOOT,0);
}
return 0;
}
这个是关机的不是注销系统的!
ExitWindowsEx(EWX_SHUTDOWN, EWX_FORCE); //EWX_SHUTDOWN(关机), EWX_POWEROFF(注销), EWX_REBOOT(重启)