BOOL RestartComputer()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// 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);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE,
0x00040000))
return FALSE;
return TRUE;
}
如果把 EWX_REBOOT 换成 EWX_SHUTDOWN 就可以关闭计算机了
本文介绍了一个用于重启或关闭计算机的API示例代码。通过调整代码中的参数,可以实现重启或强制关闭计算机的功能。文章展示了如何使用C语言获取进程令牌、设置权限并触发系统关闭或重启。
7万+

被折叠的 条评论
为什么被折叠?



