我想用vc实现自动关机,但是每次用它关机时,它都是重新启动,就是不关机,而用2000本身自带的功能却可以,这是为什么咧?//设置权限
SetPrivilige();
//关机
//ExitWindowsEx(EWX_POWEROFF,0); //也不行
ExitWindowsEx(EWX_SHUTDOWN,0);

解决方案 »

  1.   

    你是用win2000吗?The system must support the power-off feature
      

  2.   

    TOKEN_PRIVILEGES tkp,tkpNewButIgnored;
    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();
      

  3.   

    这是我的程序中的关闭计算机的按钮做的动做,你把OnOK();去了就行了。
    to beijingshizi(北京石子) :他用2000可以关机说明他的电源支持自动关机。
      

  4.   

    EWX_POWEROFF
    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. 同意楼上的!!!!!!!!!!
      

  5.   

    我也遇到过同样的情况
    不过我遇到的是显示可以安全关机的界面,但并没有断电,要手动按一下POWER键
      

  6.   

    http://www.tech521.com/show_data.asp?tid=1608
      

  7.   

    http://www.csdn.net/cnshare/soft/12/12414.shtm
    自己写的一个作业,有良好的注释!
    共同进步
      

  8.   

    谢谢各位!
    to wistaria(听风听雨):
    其实我就是用的你说的这个例子,但是程序就是不能关机,每次关机都是重新启动。
      

  9.   

    to andy_lau(阿虎) 
    http://www.csdn.net/cnshare/soft/12/12414.shtm 里的zip已经损坏。
    其实,我想问得只是为什么我发出关机命令时,它却是重新启动?