我有一个Windows窗体应用程序,它将在域和非域(本地桌面)环境中运行。我试图了解Windows安全如何在这些不同的环境中工作。我需要以编程方式识别Windows用户作为管理员运行我的应用程序的时间,我假设它对于域和本地环境是不同的(并且可能在UAC处于控制状态时)。
如果开启时UAC是否取代域登录,我也有点困惑?
我预计该产品的大多数远程用户也将被设置为本地管理员,并受到UAC的限制。
如何在这些条件下检查权限? (vb.net应用程序,但c#也很好 - 谢谢)
干杯,蒂姆。
答案 0 :(得分:1)
Public Function isWindowsAdministrator() As Boolean
My.User.InitializeWithWindowsUser()
If My.User.IsAuthenticated Then
If My.User.IsInRole(Microsoft.VisualBasic.ApplicationServices.BuiltInRole.Administrator) Then
Return True
End If
End If
Return False
End Function
可能有一个非VB /'纯'NET替代品,我只是不知道等价物。还有一种方法可以测试用户是否可以升级到Admin,但它是一个PInvoke,凌乱的win32,并没有实际提升,只是测试。
UAC仍会弹出,如果用户可以授权,上面的内容会提前通知您。
答案 1 :(得分:0)
Vb.Net:
Public Function IsUserAnAdmin()As Boolean 结束功能
C#:
[的DllImport( “SHELL32.DLL”)] public static extern bool IsUserAnAdmin();
如您所见,通过调用IsUserAnAdmin返回一个布尔值(您显然可以使用别名)。为清楚起见,我相信这适用于我提到的所有场景,但我还没有完全完成我的域测试....但