我用关机API函数ExitWindowsEx完成关机任务,就注销可以,关机和待机,重启都没反应.请高手指点

解决方案 »

  1.   

    权限不够,你的账户只有注销的权限。或者你需要调整你进程的权限AdjustTokenPrivilege
      

  2.   

    //WINDOWS NT/98下安全关机或注销的调用涵数
    void WinShutdown(UINT ShutdownFlag)
    {
        OSVERSIONINFO oi;
        oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
        GetVersionEx(&oi);
      //如果是NT/2000下需先设置相关权限
         if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT) 
     {
           HANDLE handle;
           TOKEN_PRIVILEGES tkp;       OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
           LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);       tkp.PrivilegeCount = 1;  // one privilege to set    
           tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
     
           AdjustTokenPrivileges(handle, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
     }    //WIN98下关机或注销时可直接调用下面涵数既可
    ::ExitWindowsEx(ShutdownFlag,0);}
    调用WinShutdown(EWX_SHUTDOWN);即可.
      

  3.   

    用这两个参数试试:EWX_POWEROFF | EWX_FORCE