Windows 安全性和识别 .Net 中的特权

本文关键字:特权 Net 识别 安全性 Windows | 更新日期: 2023-09-27 18:33:38

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

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

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

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

干杯,蒂姆。

Windows 安全性和识别 .Net 中的特权

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 仍然会弹出,上面只是提前通知您用户是否可以授权。

Vb.Net:

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

C#:

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

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