Моя рекомендация будет не делать этого, используя ServerManager, хотя возможно через API конфигурации, не будет уважать модель поставщика, что IIS Поддержка пользователей. Например, у кого-то может быть поставщик базы данных «SQL Server», а ваши пользователи в конфигурации действительно не работают.
Для этого вы используете API в папке Microsoft.Web.Management.dll (в Windows \ system32 \ inetsrv), называемой ManagementAuthentication, которая имеет два метода для этого: CreateUser и Grant.
Я написал запись в блоге несколько лет назад о том, как вызывать их из PowerShell: http://blogs.msdn.com/b/carlosag/archive/2009/10/23/adding-iis-manager-users-and-permissions-through-powershell.aspx
Но называть их так же легко, как:
Microsoft.Web.Management.Server.ManagementAuthentication.CreateUser("MyUser", "ThePassword");
Microsoft.Web.Management.Server.ManagementAuthorization.Grant("MyUser", "Default Web Site", false);
Это будет правильно использовать любой провайдер настроен , и если используется поставщик конфигурации по умолчанию, то это сохранит его в Administration.config, но если бы он был где-то в другом месте, он бы сделал правильные вещи (например, вставляя данные в базу данных или в другое место).
У меня проблема с этим советом. Первая строка действительно создает пользовательский MyUser. Однако вторая строка не кажется достаточной для входа пользователя. Когда я открываю FTP-сайт в диспетчере IIS (после запуска вашего предлагаемого кода), я могу найти MyUser в «Разрешениях диспетчера IIS» на моем FTP-сайте, но я не могу найти его в «Правилах авторизации FTP». Следовательно, FTP-вход завершается с сообщением «530-Пользователь не может войти в систему, домашний каталог недоступен». Как только я добавлю пользователя в «Правила авторизации FTP», он начнет работать. Это происходит с и без изоляции пользователя FTP. Помогите? – DenNukem
О, это спасло мой бекон: [C: \ Windows \ system32 \ inetsrv \ appcmd.exe установить конфигурацию «MyFtpSite» -сегмент: system.ftpServer/security/authorization/+ "[accessType = 'Allow', users = 'MyUser ', permissions =' Read, Write '] "/ commit: apphost] Я не мог войти без него. – DenNukem