Добавление пользователя AD в локальную группу компьютеров с помощью AccountManagement
Я хотел реализовать добавление пользователя AD в группу локальных компьютеров через User и GroupPrincipals, и я подумал, что это будет работать хорошо и легко. К сожалению, я продолжаю получать сообщение об отказе в доступе. Возможно, я просто не понимаю правильную аутентификацию, но я предположил, что у меня настроен правильный доступ. Вот фрагмент кода того, что называется:
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. с открытием ctx через "MyUser" и "MyPW", я подумал, что это позволит групповые манипуляции на машине, так как эта учетная запись является частью группы локальных администраторов машины. Могу ли я не смешивать контексты машины / домена таким образом, или есть проблема с аутентификацией, которую я просто пропускаю?
1 ответ
Вы запускали Visual Studio в режиме администратора. Несмотря на то, что ваш логин имеет права администратора, ваша программа должна повысить свои права, чтобы использовать эти права, если вы не запустили ее с повышенными правами.
Увидеть: