c# - 如何检查当前用户是否在管理组c#

标签 c# .net

我已经阅读了相关的 Stack Overflow 问题并尝试了以下代码:

WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (null != identity)
{
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
return false;

即使我手动确认当前用户是本地内置 Administrators 组的成员,它也不会返回 true。

我错过了什么?

谢谢。

最佳答案

刚刚找到其他方法来检查用户是否是管理员,而不是以管理员身份运行应用程序:

private static bool  IsAdmin()
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();
            if (identity != null)
            {
                WindowsPrincipal principal = new WindowsPrincipal(identity);
                List<Claim> list = new List<Claim>(principal.UserClaims);
                Claim c = list.Find(p => p.Value.Contains("S-1-5-32-544"));
                if (c != null)
                    return true;
            }
            return false;
        }

归功于 this answer , 但代码更正了一点。

关于c# - 如何检查当前用户是否在管理组c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507149/

相关文章:

c# - 复制引用而不是新的深拷贝

c# - 具有多个模型的 Entity Framework 抛出错误,说明 "The model backing the <modelDbContext> context has changed..."

c# - 如何在 C# 中一次播放多个频率的声音?

.net - 无法使用 REGASM/u 删除 COM [PrimaryInteropAssemblyName] 类型库值

c# - .NET 构建过程和链接

c# - 将 POCO 对象类和 DBContext 从 Entity Framework 6 模型中分离出来

c# - 可以指定使用 delegate.BeginInvoke 时运行 AsyncCallback 的线程吗?

c# - 为什么我们应该使用临时对象来引发事件?

c# - 无法设置 MQL_DLLS_ALLOWED

c# - ASP.NET MVC 自定义 View 路由