我在开发者方面的角色。我有一个应用程序试图检查用户是否有权访问共享。在应用程序中,我检查了该共享上的组。然后我检查所有组的用户是在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