2

管理者以外のユーザーが 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

アプリケーションを実行しているユーザーがWebサーバーの管理者になることなく仮想ディレクトリを作成できるようにする、winformsアプリケーションで別のユーザーになりすます正しい方法は何ですか? これができることはわかっています.IISマネージャーでは、「接続」チェックボックスを使用して実行できます。

4

1 に答える 1

2

この問題に遭遇してから長い時間が経過しているため、いくつか間違ったことを覚えている可能性があります。しかし、IIRC...

IIS のルート ディレクトリは、新しいディレクトリを作成するために管理者特権を必要とする ACL によって保護されています。内部的には、COM と RPC またはローカル RPC の両方を組み合わせていると思われるため、単純な偽装ではこの問題を解決できない可能性があります。COM 境界を越えた偽装は、ネイティブ コードでは扱いにくく、マネージ コードでは非常に扱いにくいものです。あなたのなりすましの手口によって、この分野で問題が発生している可能性が非常に高いです。

ただし、Web サーバーの制限を解除して、通常のユーザーに IIS でルート ディレクトリを作成させることは可能です。そのためのプロセスについては、次のブログ投稿で概説しました。

于 2010-02-02T18:32:20.920 に答える