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

本文关键字:管理员 权限 是否 何确定 用户 | 更新日期: 2023-09-27 18:14:41

我用c#创建了一个程序,可以让你改变Windows 7登录屏幕的背景。

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

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

所以我想知道是否有一种方法来检查用户有什么权限?或者一种绕过它的方法。提前感谢!

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

要检测这个,你可以得到一个WindowsIdentity的对象,像这样:

WindowsIdentity identity = WindowsIdentity.GetCurrent();

然后创建一个WindowsPrincipan实例:

WindowsPrincipal principal = new WindowsPrincipal(identity);

,最后使用IsInRole()方法检查,如下所示:

string role = "BUILTIN''Administrators";
bool IsAdmin = principal.IsInRole(role));

则可以使用IsAdmin变量来确定当前用户是否是Admin。

source - http://csharptuning.blogspot.com/2007/09/detecting-is-current-user-is.html

问题是UAC。这是一个需要提升的操作。尽管用户在administrators组中,但默认情况下会给进程一个标准的用户令牌。

解决方案是将requireAdministrator选项添加到应用程序的清单中,以便应用程序调用UAC提升对话框。