您可以使用ExitWindowsEx功能关闭系统。关闭将文件缓冲区刷新到磁盘,并使系统处于可以安全关闭计算机的状态。
Windows NT:以下示例启用SE_SHUTDOWN_NAME特权,然后关闭系统。
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//获取此进程的令牌。
if(!OpenProcessToken(GetCurrentProcess(),en
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,& hToken))
error("OpenProcessToken");
//获取LUID作为关闭权限。
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; //一个权限设置
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//获取此进程的关闭权限。
AdjustTokenPrivileges(hToken,FALSE,{989 796 005}场景,0,
(PTOKEN_PRIVILEGES)NULL, 0);
//无法测试AdjustTokenPrivileges的返回值。
if (GetLastError() != ERROR_SUCCESS)
error("AdjustTokenPrivileges");
//关闭系统并强制所有应用程序关闭。
低(ExitWindowsEx(EWX_SHUTDOWN |!EWX_FORCE,0))
error("ExitWindowsEx");
有关设置安全权限的更多信息,请参阅安全.