Создайте виртуальный каталог в iis 6 программно, используя vb.net в качестве непривилегированного пользователя - PullRequest
2 голосов
/ 02 февраля 2010

Я пытаюсь написать приложение, которое позволит пользователю без прав администратора создавать виртуальные каталоги в IIS6. Я пробовал множество разных способов олицетворения административной учетной записи, но, похоже, ничего не работает для создания виртуального каталога.

Вот кое-что из того, что я пробовал:

dim sDirPath as string = "IIS://remotehost/W3svc/1/root"
Dim de As DirectoryEntry = New DirectoryEntry()
de.Path = sDirPath
de.AuthenticationType = AuthenticationTypes.Secure
de.Username = tbxUsername.Text
de.Password = tbxPassword.Text
''Fails here
virtualId = CType(de.Invoke("Create", "IIsWebVirtualDir", dirName), DirectoryEntry)

Использование класса AccountAlias ​​из здесь :

aa.BeginImpersonation()
Try
    dim sDirPath as string = "IIS://remotehost/W3svc/1/root"
    Dim de As DirectoryEntry = New DirectoryEntry()
    de.Path = sDirPath
    de.AuthenticationType = AuthenticationTypes.Secure
    ''Fails Here
    virtualId = CType(de.Invoke("Create", "IIsWebVirtualDir", dirName), DirectoryEntry)
Finally
    aa.EndImpersonation()
End Try

Как правильно выдать себя за другого пользователя в приложении winforms, которое позволит мне создать виртуальный каталог БЕЗ пользователя, который запускает приложение, являясь администратором на веб-сервере? Я знаю, что это можно сделать, диспетчер IIS позволяет использовать для этого флажок «подключиться как».

1 Ответ

2 голосов
/ 02 февраля 2010

Прошло много времени с тех пор, как я столкнулся с этой проблемой, поэтому я могу вспомнить некоторые вещи неправильно. Но IIRC ...

Корневой каталог IIS защищен ACL-списком, который требует административных привилегий для создания нового каталога. Простое олицетворение, скорее всего, не решит эту проблему, потому что я считаю, что вы объединяете как COM, так и RPC или Local RPC. Олицетворение через границы COM сложно в нативном коде и очень сложно из управляемого кода. Очень похоже на то, что вы столкнулись с проблемой в этой области из-за своего трюка с подражанием.

Однако можно снять ограничение на веб-сервере и заставить обычных пользователей создавать корневые каталоги в IIS. Я изложил процесс для этого в следующем сообщении в блоге

...