您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 非管理员权限去前置管理员权限启动的窗体

非管理员权限去前置管理员权限启动的窗体

来源:网络整理     时间:2016/7/3 1:17:15     关键词:

关于网友提出的“ 非管理员权限去前置管理员权限启动的窗体”问题疑问,本网通过在网上对“ 非管理员权限去前置管理员权限启动的窗体”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 非管理员权限去前置管理员权限启动的窗体
描述:

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


解决方案1:

上代码


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;  
}  
解决方案2:

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


以上介绍了“ 非管理员权限去前置管理员权限启动的窗体”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2229395.html

相关图片

相关文章