だからここに私の現在のコードがあります:
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ユーザーでテストしても、falseが返されます.
何か案は?コードを変更することは可能ですが、望ましくありません。私は100%ではありませんが、コンパイルすることさえできます...