如何确定用户是不是具有管理员权限?

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 提升对话框。

【讨论】:

以上是关于如何确定用户是不是具有管理员权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是在win32中具有本地管理员权限

检测程序是不是以完全管理员权限运行

如何找到对 SQL Server Express 具有系统管理员访问权限的 Windows 用户和组?

验证 Windows 用户名/密码是不是具有管理员权限

Nodejs/mongodb - 检查用户是不是具有管理员权限(基于令牌的身份验证)

如何添加管理员权限