2009-09-03 52 views
1

我想檢索我機器上的所有本地羣組(Vista在W2k3域中)。查詢當地羣組

如果我運行:

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檢查進行過濾? – 2009-09-03 21:25:10

+0

它的確如此,但據我所知,WinNT提供程序不允許像ldap那樣進行搜索(即不能使用目錄搜索器) – 2009-09-03 22:14:06