我用关机API函数ExitWindowsEx完成关机任务,就注销可以,关机和待机,重启都没反应.请高手指点
权限不够,你的账户只有注销的权限。
或者你需要调整你进程的权限AdjustTokenPrivilege
//WINDOWS NT/98下安全关机或注销的调用涵数
void WinShutdown(UINT ShutdownFlag)
{
OSVERSIONINFO oi;
oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&oi);
//如果是NT/2000下需先设置相关权限
if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
HANDLE handle;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
}
//WIN98下关机或注销时可直接调用下面涵数既可
::ExitWindowsEx(ShutdownFlag,0);
}
调用WinShutdown(EWX_SHUTDOWN);即可.