如何用C语言实现关闭计算机和重新启动计算机?
大虾们,如何用C语言实现关闭计算机和重新启动计算机? 问题点数:20、回复次数:6Top
1 楼leafstream(叶飘扬)回复于 2002-05-22 08:05:21 得分 5
纯粹的tc应该不行,tc基于dos,而dos操作系统支持at电源,没有自动关机
但是可以有自动重启(记得什么地方见过一个restart命令???)
最好查一下中断表,看看行不行。Top
2 楼flyer_2001()回复于 2002-05-22 08:56:29 得分 10
自动重启:
outportb(0x64,0xfe);/*test memory while post*/
Top
3 楼overit(哦)回复于 2002-05-22 09:02:49 得分 5
/*---------------------------------------------------------------
重新启动
---------------------------------------------------------------*/
int Reboot ()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE, 0);
}
/*---------------------------------------------------------------
关闭计算机
---------------------------------------------------------------*/
int ShutDown ()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
}Top
4 楼fengzheng(风筝)回复于 2002-05-22 17:39:46 得分 0
gzTop
5 楼javaxbenz(任逍遥)回复于 2002-05-22 17:46:00 得分 0
GZTop




