一个基于对话框的MFC数据库应用程序,包括一个主界面,点击该主界面上的退出系统按钮进入退出系统对话框,该对话框有两个单选按钮: “退出系统“和“注销并以其他用户登陆“
请问:如何实现后者--注销并以其他用户登陆?

解决方案 »

  1.   

    是操作系统吗
    要是操作系统

    ExitWindowEx(nFlag,reserve)
    nFlag:EWX_LOGOFF
          EWX_PWEROFF
          EWX_REBOOT
          EWX_SHUTDOWN
      

  2.   

    void CShutDlg::OnRestart() 
    {

    OSVERSIONINFO OsVersionInfo;
    OsVersionInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    GetVersionEx(&OsVersionInfo);
    if( OsVersionInfo.dwPlatformId==VER_PLATFORM_WIN32_NT)
    {
    DWORD dwReserved;
    ExitWindowsEx(EWX_LOGOFF,dwReserved);
    }}
    void CShutDlg::OnShutdown()
    {
       OSVERSIONINFO OsVersionInfo;
    OsVersionInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    GetVersionEx(&OsVersionInfo);
    if( OsVersionInfo.dwPlatformId==VER_PLATFORM_WIN32_NT)
    {
    TOKEN_PRIVILEGES tkp,tkpnewbutignored;
    HANDLE hdltokenhandle;
    BOOL rc;
    LUID tmpluid;
    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|EWX_FORCE,  0);
    }
    else
    {
    ExitWindowsEx(EWX_SHUTDOWN,0);
    }
    }