2010-02-02 2 views
2

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

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

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 ​​из here:

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 позволяет использовать флажок «подключиться как», чтобы сделать это.

ответ

2

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

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

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