地狱解剖bt百度云网盘:windows2000的重启程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 20:56:50
用VB及C语言

// 关机函数
// EWX_LOGOFF : 注销
// EWX_REBOOT|EWX_FORCE : 重启动
// EWX_POWEROFF|EWX_FORCE: 关机
// EWX_SHUTDOWN : 关闭系统, 使之能安全关闭电源
// EWX_FORCE : 强制终止, 不发送 WM_QUERYENDSESSION 和 WM_ENDSESSION
// EWX_FORCEIFHUNG : 发送, 如果没响应, 则强制终止
// 注意 Windows 2000/XP 和 Windows95的实现不同
//----------------------------------------
BOOL cjbExitWindow()
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tkp;
BOOL fResult = FALSE;
if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{// win2000, 需要 SE_SHUTDOWN_NAME 特性
if(LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid))
{
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0))
{
return ::ExitWindowsEx(EWX_POWEROFF|EWX_FORCEIFHUNG , 0); // Windows2000/XP 使用,给其它进程发消息
}
}
}

return ::ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE, 0); // 使用这个在 98 下 ,不支持 EWX_FOURCEIFHUNG
}