0

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

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

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

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

干杯,蒂姆。

4

2 回答 2

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 替代方案,我只是不知道等价物。还有一种方法可以测试用户是否可以提升到管理员,但这是一个 PInvoke,凌乱的 win32 事情,实际上并没有提升,只是测试。

UAC 还是会弹出,上面只是让你提前知道用户是否可以授权。

于 2013-10-02T12:30:03.300 回答
0

VB.Net:

公共函数 IsUserAnAdmin() 作为布尔结束函数

C#:

[DllImport("shell32.dll")] public static extern bool IsUserAnAdmin();

如您所见,通过调用 IsUserAnAdmin 返回一个布尔值(您显然可以使用别名)。为清楚起见,我相信这适用于我提到的所有场景,但我还没有完全完成我的域测试....

于 2013-10-03T09:18:58.780 回答