web-dev-qa-db-ja.com

パフォーマンスカウンターにアクセスするときの「レジストリキー 'グローバル'へのアクセスが拒否されました」

ASP.NETアプリケーションからいくつかのパフォーマンスカウンターを読み取ろうとしています。すると、「レジストリキー 'Global'へのアクセスが拒否されました」というエラーが表示されます。

ユーザーIIS AppPool\DefaultAppPoolを使用して here および here の指示に従ってみました。これは、アプリプールで使用するように構成されたIDです。

Screenshot of App Pool configuration

そのユーザーをPerformance Monitor Usersグループに追加しました。

enter image description here

ユーザーを追加した後、コンピューターを再起動しました。しかし、まだエラーが発生します。

また、ユーザーIUSRおよびNETWORK SERVICEをPerformance Monitor Usersグループに追加しようとしましたが、これらも機能しません。必死になって、ユーザー「Everyone」をPerformance Monitor Usersグループに追加してみましたが、実際には機能します。しかし、私の目標は、実稼働環境でアプリケーションの統計を記録することであり、実稼働サーバー上のそのグループに「全員」を追加したくありません。

セキュリティ例外を生成せずにパフォーマンスカウンターを読み取るには、他に何が必要ですか?

36
Charlie Kilian

私は解決策を見つけました。一方、インターネット上のさまざまなリンクからIDを使用するように指示されていますIIS APPPOOL\DefaultAppPool、それは完全な話ではありません。実際に「DefaultAppPool」という名前のアプリケーションプールにアプリケーションを割り当てている場合は、onlyが機能します。

ServerFaultのこのリンク には答えがあります。アプリプールの名前を使用する必要があります。私の場合、アプリプールの名前は「ステージング」であったため、正しいユーザーはIIS APPPOOL\staging。このユーザーをPerformance Monitor Usersグループに入れると、問題が修正されました。

60
Charlie Kilian