4

ローカル グループが既に存在するかどうかを確認する方法はありますか? 私の「最善の」解決策は、例外をキャッチすることです。例外をキャッチせずに同じ目標を達成する方法はありますか?

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;
}
4

2 に答える 2

8

以下のコードを試すことができます

        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"));
于 2013-09-04T06:08:51.040 に答える
1

または、次のようにPrincipalContextクラスを使用できます。

using(var local = new PrincipalContext(ContextType.Machine)) 
{
    var group = GroupPrincipal.FindByIdentity(local, "MyGroup");
    var groupExists = group != null; 
}
于 2015-03-10T04:36:59.997 に答える