试试下面的,可能你的权限没有提升吧BOOL ShutdownSystem()
{
OSVERSIONINFO osi; osi.dwOSVersionInfoSize = sizeof(osi);
GetVersionEx(&osi); if (osi.dwPlatformId == VER_PLATFORM_WIN32_NT) {
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,
&hToken))
return FALSE; if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &luid)) {
CloseHandle(hToken);
return FALSE;
} tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
if (GetLastError() != ERROR_SUCCESS)
return FALSE; CloseHandle(hToken);
}
{
OSVERSIONINFO osi; osi.dwOSVersionInfoSize = sizeof(osi);
GetVersionEx(&osi); if (osi.dwPlatformId == VER_PLATFORM_WIN32_NT) {
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,
&hToken))
return FALSE; if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &luid)) {
CloseHandle(hToken);
return FALSE;
} tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL);
if (GetLastError() != ERROR_SUCCESS)
return FALSE; CloseHandle(hToken);
}
}
不好意思,漏了两行最重要的:)