如何用程序控制系统关机和重启 我调用ExitWindowsEX()时。只有注销能正常工作。重启和关机都不行。我的操作系统是2000。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //参数为下面的几项根据需要组合//EWX_LOGOFF,EWX_POWEROFF,EWX_REBOOT,EWX_SHUTDOWN//EWX_FORCE,EWX_FORCEIFHUNGBOOL ShutDownWindows(UINT t){ OSVERSIONINFO osv; //定义一个操作系统信息的结构体 osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO; GetVersionEx(&osv); //查询当前操作系统 if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/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(t,0); } else { ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。 PostQuitMessage(0); } return true;} ShutDownWindows(EWX_SHUTDOWN|EWX_FORCE);然后把这个函数拷贝到你的程序里...或者就把下面拷到你要关机的地方//====================================UINT t=EWX_SHUTDOWN|EWX_FORCE;OSVERSIONINFO osv; //定义一个操作系统信息的结构体 osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO; GetVersionEx(&osv); //查询当前操作系统 if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/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(t,0); } else { ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。 PostQuitMessage(0); }//===================================================================== 后缀为def的文件是什么文件? asctime()得到的时间如何生成一个字符串DD-MMM-YY HH:MM:SS,其中MMM是英文表示的月份。 对话框问题(急!!!) 已知COLORREF颜色变量,如何知道它的RED,GREEN,BLUE,三个量分别是多少 100分: 我的Vc程序怎么加断点中断不了 VC++服务启动怎么写 新手菜鸟问题:关于TRACE,debug问题!!!!给分80 关于activex问题!急!!! 请教一个sql时间查询的问题 有关COM的问题? 关于按纽 请教这句SQL怎么写?
//EWX_LOGOFF,EWX_POWEROFF,EWX_REBOOT,EWX_SHUTDOWN
//EWX_FORCE,EWX_FORCEIFHUNG
BOOL ShutDownWindows(UINT t)
{
OSVERSIONINFO osv; //定义一个操作系统信息的结构体
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv); //查询当前操作系统
if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/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(t,0);
}
else
{
ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。
PostQuitMessage(0);
}
return true;
}
然后把这个函数拷贝到你的程序里...
或者就把下面拷到你要关机的地方
//====================================
UINT t=EWX_SHUTDOWN|EWX_FORCE;
OSVERSIONINFO osv; //定义一个操作系统信息的结构体
osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
GetVersionEx(&osv); //查询当前操作系统
if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT) //判断是否是2000/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(t,0);
}
else
{
ExitWindowsEx(t,0);//调用ExitWindowsEx关闭机器。
PostQuitMessage(0);
}
//=====================================================================