繁体   English   中英

基于Windows当前用户的C#应用​​程序授权

[英]c# application authorization based on Windows current user

我编写了一个小应用程序,我需要添加一些授权安全提示。

简单示例:我有一个包含两个按钮的WinForm:btnAdd和btnDelete。 我要那个:

  • 如果当前用户在管理员组中,则将同时显示上面的两个按钮

  • 否则(如果不在管理员组中(如猜测帐户),则仅显示btnAdd。

我怎样才能做到这一点

您应该能够构造WindowsPrincipal对象,然后仅检查用户是否具有您期望的角色,然后使用返回值将按钮设置为可见。 像下面这样

using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{
    WindowsPrincipal principal = new WindowsPrincipal(identity);

    // using WindowsBuiltInRole.Administrator or "BUILTIN\\Administrators" should work
    btnAdd.Visible = principal.IsInRole(WindowsBuiltInRole.Administrator);
}

经过更新的代码有效,我已经在本地管理员那里进行了测试,因为您要测试当前用户,因此WindowsIdentity.GetCurrent()实际上更干净。

如果需要确认您是否是计算机的管理员,则可以通过MMC检查组成员身份,但是如果涉及到任何域组并且您无权访问,则无法检查此内容。通过MMC除非您有权访问AD。

一种确认用户是否为组成员的可靠方法是在命令提示符窗口中运行以下命令

获取本地管理员组的成员:

net localgroup administrators

获取域组的成员:例如,如果mydomain\\WorkstationAdmins是本地Administrators组的成员,而userIdmydomain \\ WorkstationAdmins (因此是wokstation的管理员)的成员,则这是必需的

net group "WorkstationAdmins" /domain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM