Windows安全性和.Net中的权限

时间:2013-10-02 12:20:12

标签: c# windows vb.net winforms windows-security

我有一个Windows窗体应用程序,它将在域和非域(本地桌面)环境中运行。我试图了解Windows安全如何在这些不同的环境中工作。我需要以编程方式识别Windows用户作为管理员运行我的应用程序的时间,我假设它对于域和本地环境是不同的(并且可能在UAC处于控制状态时)。

如果开启时UAC是否取代域登录,我也有点困惑?

我预计该产品的大多数远程用户也将被设置为本地管理员,并受到UAC的限制。

如何在这些条件下检查权限? (vb.net应用程序,但c#也很好 - 谢谢)

干杯,蒂姆。

2 个答案:

答案 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返回一个布尔值(您显然可以使用别名)。为清楚起见,我相信这适用于我提到的所有场景,但我还没有完全完成我的域测试....但