【问题标题】:Elegant way to check if a local group already exists检查本地组是否已存在的优雅方法
【发布时间】:2013-09-07 12:13:22
【问题描述】:

有没有办法查明本地组是否已经存在?我的“最佳”解决方案通过捕获异常来工作。有没有办法在不捕获异常的情况下实现相同的目标?

var machine = Environment.MachineName;
var server = new DirectoryEntry(string.Format("WinNT://{0},Computer", machine));
bool groupExists = true;
try
{
   server.Children.Find("MyGroup", "group");
}
catch (COMException ex)
{
   if (ex.ErrorCode == -2147022676)
      groupExists = false;
   else
      throw;
}

【问题讨论】:

    标签: c# .net directoryentry


    【解决方案1】:

    你可以试试下面的代码

            var machine = Environment.MachineName;
            var server = new DirectoryEntry(string.Format("WinNT://{0},Computer", machine));
            bool exists = server.Children.Cast<DirectoryEntry>().Any(d => d.SchemaClassName.Equals("Group") && d.Name.Equals("Administrators"));
    

    【讨论】:

    • 我们如何让用户进入“管理员”组?
    【解决方案2】:

    您也可以使用PrincipalContext 类,如下所示:

    using(var local = new PrincipalContext(ContextType.Machine)) 
    {
        var group = GroupPrincipal.FindByIdentity(local, "MyGroup");
        var groupExists = group != null; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多