我正在使用System.DirectoryServices.AccountManagement命名空間來查找域用戶及其相應的AD安全組。這很好。查找域用戶所屬的本地組?
我還使用該名稱空間來查詢遠程服務器上的本地安全組。我能夠找到一個安全組,然後列出該組的用戶沒有問題。
什麼我遇到的問題,顯示其本地組的域用戶屬於:
PrincipalContext localmachine = new PrincipalContext(ContextType.Machine, "ServerName");
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
// find the user using the domain context (Works fine)
UserPrincipal user = UserPrincipal.FindByIdentity(domain, userName);
// if found - grab its groups
if (user != null)
{
// The get groups method is the only method that would accept a new context
PrincipalSearchResult<Principal> groups = user.GetGroups(localMachine);
// no groups are returned .... removed rest of code
}
我試圖使用GetGroups方法傳入LOCALMACHINE PrincipalContext但沒有返回組。
用戶僅存在於域AD中。 localMachine上的本地用戶沒有該用戶的條目。域用戶被添加到本地安全組。
任何想法?我希望能夠拉出該域用戶所屬的所有本地組列表,然後查看該列表中是否存在某個組。現在唯一可行的選擇是讓我搜索系統中的某些組,並查看域用戶是否屬於該組。
類似的問題在這裏 - 希望的一些使用 - HTTP:/ /stackoverflow.com/questions/4809460/determine-nested-groups-of-windowsidentity-instance – dash
我試過這樣做。在機器上查找用戶時,FindByIdentity方法返回null。我認爲這是因爲沒有創建實際的本地用戶。它是一個域用戶。我已經嘗試傳遞用戶名和前綴域。 –
挖掘一些舊的代碼,我發現我完全按照你描述的方式來完成它;枚舉本地機器組(通過DirectorySearcher),然後枚舉這些以查看我是否可以找到該用戶所屬的組。我們也有一個相當淺的層次。抱歉不能有更多的幫助。 – dash