User および GroupPrincipals を介してローカル マシン グループに AD ユーザーを追加する実装を実装したいと考えていましたが、うまく簡単に機能すると思いました。残念ながら、引き続き General Access Denied エラーが発生します。適切な認証が行われていることを理解していない可能性がありますが、適切なアクセスが設定されていると思いました。呼び出されているもののコード スニペットを次に示します。
var ctx = new PrincipalContext(ContextType.Machine,
Environment.MachineName,
ConfigurationManager.AppSettings["MyUser"],
ConfigurationManager.AppSettings["MyPW"]);
var grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "LocalGrp");
var adUser = ADService.GetUserByDomainUserName(vModel.ContactId);
var adCtx = new PrincipalContext(ContextType.Domain,
"myDomain.com",
ConfigurationManager.AppSettings["MyUser"],
ConfigurationManager.AppSettings["MyPW"])
;
var user = UserPrincipal.FindByIdentity(adCtx,
IdentityType.Guid,
adUser.UserGuid.ToString());
if (grp != null &&
user != null)
{
if(!user.IsMemberOf(grp))
{
grp.Members.Add(user);
grp.Save();
}
}
ユーザーが見つかり、グループが見つかりましたが、追加して grp.Save() ステップに到達すると、General Access Denied 例外が発生します。「MyUser」と「MyPW」を介してctxが開かれているため、そのアカウントはマシンのローカル管理者グループの一部であるため、マシンでのグループ操作が可能になると思いました。この方法でマシン/ドメイン コンテキストを混在させることはできませんか、それとも認証に問題があるのでしょうか?