次の問題があります。リモート マシンの IIS にアプリケーション プールを作成しようとしています。このマシンは、MS Windows Server 2012 と IIS 7.5 を実行しており、ローカル アカウントおよび管理者であるユーザー「LocalAdmin」を持っています。Run As Administrator の問題を防ぐために、UAC をオフにしました。だから、今私はできる:
- IIS に接続する
- 仮想ディレクトリを作成する
- また、Impersonalisation を使用して、リモート マシンにディレクトリを作成できます
アプリ プールにアクセスします。詳細:
var service = new DirectoryEntry(string.Format(@"IIS://{0}/W3SVC/AppPools", settings.Server), settings.FullUserName, settings.Password); DirectoryEntry pool = service.Children.Cast<DirectoryEntry>().FirstOrDefault(x => x.Name == originalAppPoolName);
これにより、既存のアプリケーション プールが返されます。電話すれば
pool.CommitChanges()
大丈夫。次に、新しいアプリケーション プールを作成しようとします。DirectoryEntry appPool = service.Children.Add(newAppPoolName, "IIsApplicationPool"); appPool.CommitChanges()
しかし、私は受け取ります
UnauthorizedAccessException
:アクセスが拒否されました。
この例外の問題を解決するにはどうすればよいですか? さらに、同じコードをローカルで実行しても問題はありません。アプリケーション プールが作成されて実行されます。したがって、問題はセキュリティと承認にあると思います。「LocalAdmin」管理者資格情報を使用してリモート サーバーにアプリケーション プールを追加するために、ローカル マシンで実行されるコードを許可するには、何をする必要がありますか?
PSまた、リモートサーバーのSecurityLogに、ローカルの資格情報でログインしようとしていることが表示されます。なぜそれが起こるのですか?擬人化を使用しても何も変わりません...
PPS ローカル マシンと同じ資格情報を持つユーザーをリモート サーバーに追加することで問題を解決しました。別の方法はありますか?