我想用vc实现自动关机,但是每次用它关机时,它都是重新启动,就是不关机,而用2000本身自带的功能却可以,这是为什么咧?//设置权限
SetPrivilige();
//关机
//ExitWindowsEx(EWX_POWEROFF,0); //也不行
ExitWindowsEx(EWX_SHUTDOWN,0);
SetPrivilige();
//关机
//ExitWindowsEx(EWX_POWEROFF,0); //也不行
ExitWindowsEx(EWX_SHUTDOWN,0);
HANDLE hdlTokenHandle;
LUID tmpLuid;
BOOL rc;
DWORD lBufferNeeded; HANDLE hdlProcessHandle = GetCurrentProcess();
rc = ::OpenProcessToken(hdlProcessHandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hdlTokenHandle); rc = LookupPrivilegeValue("","SeShutdownPrivilege", &tmpLuid);
tkp.PrivilegeCount = 1; // One privilege to set
tkp.Privileges[0].Luid = tmpLuid;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
rc = ::AdjustTokenPrivileges(hdlTokenHandle,
FALSE,
&tkp,
sizeof(tkpNewButIgnored),
&tkpNewButIgnored,
&lBufferNeeded);
ExitWindowsEx(EWX_SHUTDOWN,0);
OnOK();
to beijingshizi(北京石子) :他用2000可以关机说明他的电源支持自动关机。
Shuts down the system and turns off the power. The system must support the power-off feature.
Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section. 同意楼上的!!!!!!!!!!
不过我遇到的是显示可以安全关机的界面,但并没有断电,要手动按一下POWER键
自己写的一个作业,有良好的注释!
共同进步
to wistaria(听风听雨):
其实我就是用的你说的这个例子,但是程序就是不能关机,每次关机都是重新启动。
http://www.csdn.net/cnshare/soft/12/12414.shtm 里的zip已经损坏。
其实,我想问得只是为什么我发出关机命令时,它却是重新启动?