如何确定用户是不是具有管理员权限?
Posted
技术标签:
【中文标题】如何确定用户是不是具有管理员权限?【英文标题】:How to find out if user has administrator privileges or not?如何确定用户是否具有管理员权限? 【发布时间】:2011-11-14 21:14:20 【问题描述】:我用 C# 创建了一个程序,允许您更改 Windows 7 登录屏幕的背景。
程序必须在 System32 文件夹中创建一个新文件夹,并将文件移到那里。我在我的个人机器上对此没有任何问题,但我在朋友的机器上测试它并拒绝创建目录。
他的帐户类型是管理员,但我唯一能想到的是他缺少我在计算机上启用的某种权限。
所以我想知道是否有办法检查用户拥有哪些权限?或者一种绕过它的方法。提前致谢!
【问题讨论】:
***.com/questions/1089046/… ,***.com/questions/3600322/… 可能重复的 davidmoore.info/2011/06/20/… 【参考方案1】:要检测这一点,您可以像这样获取 WindowsIdentity 对象:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
然后通过以下方式创建一个 WindowsPrincipan 实例:
WindowsPrincipal principal = new WindowsPrincipal(identity);
最后使用 IsInRole() 方法进行检查,如下所示:
string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role));
然后您可以使用 IsAdmin 变量来确定当前用户是否为管理员。
来源 - http://csharptuning.blogspot.com/2007/09/detecting-is-current-user-is.html
【讨论】:
【参考方案2】:问题是 UAC。这是一项需要提升的操作。虽然用户属于管理员组,但默认情况下会为该进程分配一个标准用户令牌。
解决方案是将requireAdministrator
选项添加到应用程序的清单中,以便应用程序调用 UAC 提升对话框。
【讨论】:
以上是关于如何确定用户是不是具有管理员权限?的主要内容,如果未能解决你的问题,请参考以下文章
如何找到对 SQL Server Express 具有系统管理员访问权限的 Windows 用户和组?