场景是这样的,用管理员权限启动一个程序,然后程序是单实例的,
用非管理员权限重新再次启动此程序,期望结果是主窗体能够前置,即SetForegroundWindow的效果.
现在貌似非管理员权限无法达到此效果,不知道谁有办法

解决方案 »

  1.   

    http://blog.csdn.net/chinabinlang/article/details/6461404
      

  2.   

    上代码BOOL IsAdministrator() {//判断是否管理员模式   
      
        BOOL bIsElevated = FALSE;  
        HANDLE hToken = NULL;  
        UINT16 uWinVer = LOWORD(GetVersion());  
        uWinVer = MAKEWORD(HIBYTE(uWinVer),LOBYTE(uWinVer));  
      
        if (uWinVer < 0x0600))//不是VISTA、Windows7   
            return(FALSE);  
      
        if (OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hToken)) {  
      
            struct {  
                DWORD TokenIsElevated;  
            } /*TOKEN_ELEVATION*/te;  
            DWORD dwReturnLength = 0;  
      
            if (GetTokenInformation(hToken,/*TokenElevation*/(_TOKEN_INFORMATION_CLASS)20,&te,sizeof(te),&dwReturnLength)) {  
                if (dwReturnLength == sizeof(te))  
                    bIsElevated = te.TokenIsElevated;  
            }  
            CloseHandle( hToken );  
        }  
        return bIsElevated;  
    }