所以这是我当前的代码:
List<string> rowGroups = GetFileGroups((int)row.Cells["document_security_type"].Value);
bool found = false;
System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent());
foreach (string group in rowGroups)
{
if (p.IsInRole(group))
{
found = true;
break;
}
}
这是几个月前有人完成的,我很难理解为什么它不起作用。该公司最近刚刚从一个域名转移到另一个域名。所以我很好奇 p.IsInRole("String") 函数将使用什么域控制器。我假设无论计算机使用什么,它都会使用默认 DC。
奇怪的是,办公室中运行此程序的计算机可能位于 2 个单独的域中。在List<string>
对象中,我有两个可能的域。因此它可以包含诸如“domainA\groupA”、“domainA\userB”、domainB\groupC 和/或“domainB\userD”之类的项目。
所以我的主要问题是 IsInRole 函数永远不会返回 true。我知道它应该,我什至用 domainA\Domain 用户对其进行了测试,但仍然得到一个错误的返回。
有任何想法吗?更改代码是可能的,但不是想要的。我不是 100% 我什至可以编译它...