Как добавить NT AUTHORITY\IUSR в группу администраторов

Я хочу добавить учетную запись IUSR в эту группу администраторов в моем приложении winforms. Приведенный ниже код не работает, потому что не может найти пользователя для «NT AUTHORITY\IUSR»:

 DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
 DirectoryEntry administrators = AD.Children.Find("Administrators", "group");
 DirectoryEntry iusr = AD.Children.Find(@"NT AUTHORITY\IUSR", "user");

 administrators.Invoke("Add", new object[] {iusr.Path.ToString()});

Я понимаю, что это плохая идея. Я делаю это, потому что пишу приложение winforms, которое программно создает новый веб-сайт в IIS7 ТОЛЬКО ДЛЯ РАЗРАБОТКИ. Веб-сайт успешно создается, однако ASP.NET отображает ошибку «Отказано в доступе» всякий раз, когда я пытаюсь загрузить страницу. Когда я добавляю IUSR в группу администраторов, все работает нормально. Что еще я могу попробовать? Ниже приведен код, который я использую для создания нового веб-сайта:

Site site = servermgr.Sites.Add(websitename, physicalpath, port);
Binding binding = site.Bindings.CreateElement();
string bindinginfo = "*:" + port.ToString() + ":" + hostipaddress;

binding.Protocol = "http";
binding.BindingInformation = bindinginfo;
site.Bindings.Clear();
site.Bindings.Add(binding);

site.Applications.Add(applicationpath, applicationphysicalpath);

site.ApplicationDefaults.ApplicationPoolName = "Default";

servermgr.CommitChanges();

person coltech    schedule 13.01.2012    source источник
comment
вы не можете добавить несуществующего пользователя... в чем именно заключается ваш вопрос?   -  person Yahia    schedule 14.01.2012
comment
Это плохая идея   -  person Chris Shain    schedule 14.01.2012
comment
@Yahia IUSR — допустимый встроенный участник безопасности.   -  person Neil    schedule 14.01.2012
comment
@ Нил, да, но, по крайней мере, на машинах я видел, что он просто начинается с IUSR PLUS с некоторыми дополнительными символами!   -  person Yahia    schedule 14.01.2012
comment
Я понятия не имею, что вы пытаетесь сделать, но что бы это ни было, это должен быть чрезвычайно опасный способ сделать это. Предоставление анонимным запросам полных прав администратора — это рецепт полной катастрофы.   -  person Rob Levine    schedule 14.01.2012
comment
Дополнительные символы: должно быть подчеркивание, за которым следует имя машины   -  person Rubens Farias    schedule 14.01.2012
comment
Вы можете попытаться выдать себя за пользователя домена с надлежащими (и ограниченными) привилегиями или определить пул приложений с менее привилегированным пользователем.   -  person Rubens Farias    schedule 14.01.2012
comment
Пожалуйста, не добавляйте к названиям префикс C# и тому подобное. Вот для чего нужны теги.   -  person John Saunders    schedule 14.01.2012


Ответы (1)


Правильное решение — потребовать аутентификацию для страницы. Это затем предлагает браузеру войти в систему; если вы используете учетную запись с соответствующими полномочиями, страница сможет создать новый веб-сайт.

IIS7 позволяет вам настроить это из (например) ApplicationHost.config, в то время как предыдущие версии требовали редактирования метабазы ​​(обычно из диспетчера IIS).

РЕДАКТИРОВАТЬ: В зависимости от аутентификации, конфигурации браузера и сети можно настроить автоматический вход браузера на страницу с использованием вашей учетной записи домена.

person Neil    schedule 13.01.2012