.Netに、他のアプリケーションのさまざまな管理/構成を行うアプリケーションがあります。アプリプールを停止および開始できる必要があります。私はこれを達成しましたが、アプリプールをローカルシステムとして実行している場合に限ります(これは一般的に悪い考えとして受け入れられています)。
最初は(適切なProcessStartInfoオブジェクトを使用して)Process.Startでappcmd.exeを開始しましたが、最終的には終了コード-1073741502になります。さらに調査すると、Windows SDKを使用してデバッグする必要があることがわかりました。これは、アセンブリが読み込まれないため、Microsoft.Web.Administration
名前空間でより単純なソリューションのように見えるものを見つけました。
私は以下のコードを使用しますが、実行中のAppPoolにはローカルシステムのIDが必要なようです(そうでない場合は取得しますSystem.UnauthorizedAccessException
)-特権の低いアカウントで開始/停止する方法はありますか(アプリケーションIDを使用することをお勧めします)-一時的に権限を上げることもできます。
Dim serverManager As New ServerManager()
Dim applicationPoolCollection As ApplicationPoolCollection = serverManager.ApplicationPools
For Each applicationPool As ApplicationPool In applicationPoolCollection
If applicationPool.Name = appPoolName Then
applicationPool.Stop()
applicationPool.Start()
End If
Next
IDとしてカスタムアカウントを設定しましたが、そのユーザーの最小ACLが何である必要があるかを理解できません。テストとして、ユーザーをローカル管理者グループに追加しましたが、それでも取得できSystem.UnauthorizedAccessException
ます。これは、ユーザーに特定のアクセス許可を構成する必要があることを示していますが、これが何であるか、またはその方法がわかりません。誰か助けてもらえますか?