判断程序是否运行在管理员权限下
2014-12-02 23:23
113 查看
1.提出两个概念(成立条件是系统是Vista后续版本,这是因为引入了UAC)
一个是运行程序的账号是管理员账号
另一个是当前运行环境是管理员环境
2.判断程序是否运行在管理员权限,直接使用函数IsUserAnAdmin就可以判断
3.测试运行
(1)管理员账号登陆系统
_1.直接运行程序
使用Process Explorer查看进程的属性
发现此时用户User为管理员账户(Wind),在用户组列表中,有管理员用户组(Administrators),但是Flags为Deny,这是由于UAC控制下,管理员账号登陆的系统运行的程序默认运行在标准用户权限下。
_2.Run As Administrator
使用Process Explorer查看进程的属性
发现此时Users属性为管理员账户(Wind),管理员用户组(Administrators)的Flags为Owner
(2)标准用户登陆系统
_1.直接运行
使用Process Explorer查看进程属性
发现此时运行的用户为Test(普通用户),用户组中没有管理员用户组
_2.Run As Administrator
使用Process Explorer查看进程属性
发现User属性变为管理员账户(Wind)了,而且Group列表中有管理员用户组,其中Flags为Owner
4.由运行测试可以知道,判断是否运行在管理员权限下,有两个条件
进程运行用户为管理员账户
管理员用户组的Flags为Owner
5.因此可以自己编写IsUserAnAdmin函数
参考/article/5880538.html中的Am_I_In_Admin_Group函数
个人觉得这个函数即可以判断进程运行的用户是否属于管理员用户组,又可以判断是否运行权限为管理员。
一个是运行程序的账号是管理员账号
另一个是当前运行环境是管理员环境
2.判断程序是否运行在管理员权限,直接使用函数IsUserAnAdmin就可以判断
#include <ShlObj.h> #include <tchar.h> int _tmain() { BOOL bIsAdmin = IsUserAnAdmin(); if(bIsAdmin) _tprintf_s(_T("Run As administrator")); else _tprintf_s(_T("Run As user")); system("pause"); return 0; }
3.测试运行
(1)管理员账号登陆系统
_1.直接运行程序
使用Process Explorer查看进程的属性
发现此时用户User为管理员账户(Wind),在用户组列表中,有管理员用户组(Administrators),但是Flags为Deny,这是由于UAC控制下,管理员账号登陆的系统运行的程序默认运行在标准用户权限下。
_2.Run As Administrator
使用Process Explorer查看进程的属性
发现此时Users属性为管理员账户(Wind),管理员用户组(Administrators)的Flags为Owner
(2)标准用户登陆系统
_1.直接运行
使用Process Explorer查看进程属性
发现此时运行的用户为Test(普通用户),用户组中没有管理员用户组
_2.Run As Administrator
使用Process Explorer查看进程属性
发现User属性变为管理员账户(Wind)了,而且Group列表中有管理员用户组,其中Flags为Owner
4.由运行测试可以知道,判断是否运行在管理员权限下,有两个条件
进程运行用户为管理员账户
管理员用户组的Flags为Owner
5.因此可以自己编写IsUserAnAdmin函数
参考/article/5880538.html中的Am_I_In_Admin_Group函数
个人觉得这个函数即可以判断进程运行的用户是否属于管理员用户组,又可以判断是否运行权限为管理员。
相关文章推荐
- C# WinForm判断程序是否以管理员身份运行,UAC权限的提权与降权
- C#判断程序是否是管理员权限运行的方法代码示例
- VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
- C#:判断当前程序是否通过管理员运行
- 判断当前进程是否以管理员程序运行的方法
- 判断是否已经以管理员权限运行
- 判断进程是否以管理员权限运行
- C# 判断软件是否是管理员权限运行
- C#判断程序是否以管理员身份运行,否则以管理员身份重新打开 --转载
- C#:判断当前程序是否通过管理员运行
- Linux下判断程序是否高级权限运行
- C# WinForm判断Win7下程序是否以管理员身份运行
- 修改hosts文件(判断是否为管理员/以管理员权限运行脚本)
- 在Windows7上用C#判断程序是否以管理员身份运行
- 判断程序是否是以 管理员 身份运行 visual c++
- C# WinForm判断Win7下程序是否以管理员身份运行
- C#判断程序是否以管理员身份运行,否则以管理员身份重新打开
- 判断当前进程是否以管理员权限运行
- C# WinForm判断程序是否以管理员身份运行
- 判断进程是否以管理员权限运行