2009-09-03 12 views
1

私のマシン上のすべてのローカルグループ(W2k3ドメインのVista)を取得したいと思います。ローカルグループを照会する

は、私が実行した場合:

using (DirectoryEntry de = new DirectoryEntry("WinNT://" + Environment.MachineName + ",group", null, null, AuthenticationTypes.Secure)) 
{ 

} 

は、それが「不明なエラー」どうやら「無効なパス」を意味0X80005000をスロー

しかし上げていないコンピュータ(、コンピュータがする変更、グループ)を照会エラーですが、無視されるようです(すべてのオブジェクトを返しますか?私は結果を完全には調べていません)。 、ユーザーはエラーも発生させます。

私の質問は正しい道のりですか?私はすべてを取得しないようにフィルタを適用する方法はありますか?もしそうなら、どこで正しい構文を見つけることができますか?

答えて

2

私はあなたがマシンを取得する必要があると信じています - グループはその子です。

DirectoryEntry machine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",Computer"); 
foreach (DirectoryEntry child in machine.Children) 
{ 
    if (child.SchemaClassName == "Group") 
    { 
     Debug.WriteLine(child.Name); 
    } 
} 
を試してみて、いくつかのLINQでそれをスパイスすること自由に感じますが、これはあなたの基本アイデアを与える必要があります。

+0

ありがとう、これは機能しますが、目的を破ることはありませんか? "foreach"はオブジェクトをバインドさせ、後でSchemaClassNameチェックでフィルタリングされるすべてのオブジェクトを取得しませんか? –

+0

それはありますが、私が知っている限り、WinNTプロバイダはLDAPのような検索を許可しません(つまり、directorysearcherを使用することはできません) –