众所周知,在9x下关机只要Exitwindows(0,0)就行了,可是在NT/2000下这个函数
的执行结果仅是注销而已,那么如何在NT/2000下实现关机呢?看看下面这个函数吧!
void ShutDown(void)
{
OSVERSIONINFO osv;
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv);
if(osv.dwPlatfoRmid==VER_PLATFORM_win32_NT)
{
HANDLE hProcess,hToken;
TOKEN_PRIVILEGES Privileges;
LUID luid;
hProcess=GetCurrentProcess();
OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
Privileges.PrivilegeCount=1;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
Privileges.Privileges[0].Luid=luid;
Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
}
ExitWindowsEx(EWX_POWEROFF,0);
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-988317/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-988317/
本文介绍了一个在Windows NT/2000操作系统中实现关机操作的方法,通过调整进程权限并使用特定API函数来完成关机流程。
1167

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



