|
在VC6中用函数ExitWindowsEx(EWX_SHUTDOWN,0);关不了机怎么办?有没有更POWER的函数来SHUTDOWN COMPUTER?
程序如下:
#include "windows.h" void main(){ HANDLE hToken; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { MessageBox(NULL,"OpenProcessToken failed!","",MB_OK); }
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); //获得本地机唯一的标识 tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0); //调整获得的权限 if (GetLastError() != ERROR_SUCCESS) { MessageBox(NULL,"切换系统级权限失败!","",MB_OK); }
BOOL fResult =InitiateSystemShutdown( NULL, // 要关的计算机用户名 "关机时间已到,WINDOWS将在上面的时间内关机,请做好保存工作!", // 显示的消息 10, // 关机所需的时间 TRUE, // ask user to close apps FALSE); //设为TRUE为重起,设为FALSE为关机 if(!fResult) { MessageBox(NULL,"初始化系统关机失败!","",MB_OK); }
tkp.Privileges[0].Attributes = 0; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0);
if (GetLastError() != ERROR_SUCCESS) { MessageBox(NULL,"AdjustTokenPrivileges disable failed.","",MB_OK); }
ExitWindowsEx(EWX_SHUTDOWN,0);
} |