我在C#中创建了一个程序,允许您更改Windows 7登录屏幕的背景。
程序必须在System32文件夹中创建一个新文件夹,并在那里移动文件。我在我的个人计算机上没有问题,但是我在朋友机器上测试它并拒绝创建目录。
他的帐户类型是管理员,但我唯一能想到的是他错过了我在计算机上启用的某种特权。
所以我想知道是否有办法检查用户拥有哪些权限?或者一种绕过它的方法。提前谢谢!
答案 0 :(得分:3)
要检测到这一点,您可以像这样获取WindowsIdentity的对象:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
然后通过以下方式创建WindowsPrincipan实例:
WindowsPrincipal principal = new WindowsPrincipal(identity);
最后通过使用IsInRole()方法检查它:
string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role));
然后您可以使用IsAdmin变量来确定当前用户是否为Admin。
来源 - http://csharptuning.blogspot.com/2007/09/detecting-is-current-user-is.html
答案 1 :(得分:2)
问题是UAC。这是一项需要提升的操作。虽然用户位于管理员组中,但默认情况下会为该过程提供标准用户令牌。
解决方案是将requireAdministrator
选项添加到应用程序的清单中,以便应用程序调用UAC提升对话框。