我调用ExitWindowsEX()时。
只有注销能正常工作。重启和关机都不行。我的操作系统是2000。

解决方案 »

  1.   

    //参数为下面的几项根据需要组合
    //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;
    }
      

  2.   

    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);
    }
    //=====================================================================