我在開發者方面的角色。我有一個應用程序試圖檢查用戶是否有權訪問共享。在應用程序中,我檢查了該共享上的組。然後我檢查所有組的用戶是在Active Directory - 跨域
在一種情況下,我無法看到本地組,該用戶是在兩個代碼或在窗口 例如,AD:
域A \用戶1>域A \環球集團>不要看到:域B \本地組
但是,當我從域BI期待看到:
分享>域B \本地組>域A \環球集團>看不到域A \用戶1
是否有設置不正確,因爲我沒有看到在Windows工具的一些安全設置或代碼。
更新
我曾嘗試下面的代碼。我仍然無法看到Domain B \ Local Group。
string account = "{User**Or**Group}";
string domain = "{Domain}";
string dn = ADHelper.GetDistinguishedName(domain, account);
using (var forest = Forest.GetCurrentForest())
{
foreach (Domain domainName in forest.Domains)
{
Console.WriteLine(string.Format("Domain: {0}", domainName.Name));
Console.WriteLine("========================================================");
GetAllGroups(dn, domainName.Name);
domainName.Dispose();
}
}
void GetAllGroups(string dn, string domain)
{
DirectorySearcher ds = new DirectorySearcher(string.Format("GC://{0}", domain));
ds.Filter = String.Format("(&(distinguishedName={0}))", dn);
SearchResult sr = ds.FindOne();
if (sr == null)
return;
DirectoryEntry Diruser = sr.GetDirectoryEntry();
Diruser.RefreshCache(new string[] { "tokenGroups" });
for (int i = 0; i < Diruser.Properties["tokenGroups"].Count; i++)
{
SecurityIdentifier sid = new SecurityIdentifier((byte[])Diruser.Properties["tokenGroups"][i], 0);
try
{
NTAccount nt = (NTAccount)sid.Translate(typeof(NTAccount));
Console.WriteLine(nt.Value + "\t" + domain);
}
catch { }
}
}
謝謝德米特里。我會檢查這一點。 – H20rider
我無法找到用戶在其他域中所屬的組。任何想法如何做到這一點?順便說一句,GetEffectiveRightsFromAcl將不起作用,因爲我確實需要顯示用戶如何獲得共享權限的路徑 – H20rider
只需在同一頁上,請確認您做了以下操作:1.從域A連接到GC。綁定到來自域A的指定用戶。3.查詢它的tokenGroups屬性。 4.從域B連接到GC。5.綁定到GC上域A的同一用戶。 6.在此GC上查詢此用戶的tokenGroups屬性 – oldovets