如何确定用户是否具有管理员权限
本文关键字:管理员 权限 是否 何确定 用户 | 更新日期: 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提升对话框。