关于网友提出的“ 非管理员权限去前置管理员权限启动的窗体”问题疑问,本网通过在网上对“ 非管理员权限去前置管理员权限启动的窗体”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 非管理员权限去前置管理员权限启动的窗体
描述: 场景是这样的,用管理员权限启动一个程序,然后程序是单实例的,
用非管理员权限重新再次启动此程序,期望结果是主窗体能够前置,即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