【问题标题】:How to find out if user has administrator privileges or not?如何确定用户是否具有管理员权限?
【发布时间】:2011-11-14 21:14:20
【问题描述】:

我用 C# 创建了一个程序,允许您更改 Windows 7 登录屏幕的背景。

程序必须在 System32 文件夹中创建一个新文件夹,并将文件移到那里。我在我的个人机器上对此没有任何问题,但我在朋友的机器上测试它并拒绝创建目录。

他的帐户类型是管理员,但我唯一能想到的是他缺少我在计算机上启用的某种权限。

所以我想知道是否有办法检查用户拥有哪些权限?或者一种绕过它的方法。提前致谢!

【问题讨论】:

标签: c# windows impersonation


【解决方案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 提升对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多