2

アプリケーション (IIS7 AppPool で実行されている) がパフォーマンス カウンター カテゴリとそのデータを削除/追加できるようにするために、アクセス許可を取得する際に問題が発生しています。私は次のようなコードを持っています:

if (!PerformanceCounterCategory.Exists(CategoryName))
{
    var counters = new CounterCreationDataCollection();
    var opsIn = new CounterCreationData
    {
        CounterName = "Test Counter",
        CounterHelp = "Test Counter Help",
        CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    };
    counters.Add(opsIn);

    PerformanceCounterCategory.Create(CategoryName, "Service Layer Instrumentation",
                                      PerformanceCounterCategoryType.SingleInstance,
                                      counters);
}

目的は、まだ作成されていないシステムでパフォーマンス カウンターを作成することなので、静的なインストーラーの動作に縛られることはありません (大騒ぎせずにカウンターを変更できるようにしたいのです)。これまでのところ、これが機能する場合はうまく機能します。

管理者として実行可能ファイルでこのコードを実行すると、問題はありません。ただし、IIS サービス内で実行すると、AppPool にはカテゴリの変更を実行するための正しいアクセス許可がありません。WMI アクセス許可を正しく機能させることが可能であることは、以前にテスト サーバーを使用したデモで行ったことがあるので、事実としては知っていますが、それは数か月前のことで、疲れていて、ギリギリでした。全体がぼやけています。必要なセキュリティの変更を含めるためにインストール プロセスを形式化しようとして戻ってきたので、結果を再現することはできません。

Google はほんのわずかしか役に立たず、機能する前にいくつかのページから指示を寄せ集めなければならなかったことをはっきりと覚えています。IIS アプリケーション プールのパフォーマンス カウンター カテゴリの編集を有効にするための完全な手順を推奨する人はいますか?

4

3 に答える 3

1

別のプロセスでパフォーマンスカウンターコードを実行したくない場合は、権限を昇格させることにより、以下を実行できます。

http://msdn.microsoft.com/en-us/library/bd20x32d(v=vs.71).aspx

上記のリンクでは、ASP.NETアプリケーションのパフォーマンスカウンターと、ASP.NETにデフォルトでカスタムパフォーマンスカウンターを作成する権限がなく、パフォーマンスカウンターを読み取ることができない方法について説明しています。以下は記事からの引用です。

ASP.NETアプリケーションでPerformanceCounterコンポーネントを使用している場合、ASPNETユーザーアカウントの既定の設定により、パフォーマンスカウンターへのアクセスが制限されます。ASPNETユーザーアカウントは、既定では、パフォーマンスカウンターへの書き込みはできますが、読み取りはできません。また、新しいカテゴリを作成することはできません。ASPNETアカウントで偽装を使用して、新しいカテゴリを作成できます。なりすましIDには、カテゴリを作成するための十分な権限が必要です。アプリケーションでデプロイメント前に指定できるパフォーマンスカウンターが必要な場合は、デプロイメントプロジェクトで作成できます。詳細については、ASP.NETWebアプリケーションのセキュリティを参照してください。

aspになりすまして、特権を付与できる別のアカウントとして実行することもできます。ASP.NETのなりすましに関する記事のサンプルコードを以下に示します。もちろん、このユーザー名とパスワードを暗号化することもできます。この記事では、ユーザー名とパスワードを暗号化する方法について説明しています。

http://msdn.microsoft.com/en-us/library/aa719560(v=vs.71).aspx

于 2012-09-27T01:10:25.013 に答える
1

ASP.NET の外部でパフォーマンス カウンターを作成する必要があります。パフォーマンス カウンター カテゴリを作成するには、既定の AppPoolIdentity アカウントにはないアクセス許可が必要です。ASP.NET アカウントは、作成されたカスタム パフォーマンス カウンターを読み取ることができます。(ASP.NET を SYSTEM または管理者アカウントとして実行しないでください。セキュリティ リスクが生じるためです)。

セットアップ プロセスでカウンターを作成できます。

于 2012-09-25T08:49:22.080 に答える
1

パフォーマンス カウンターのカテゴリを変更できるのは、管理者特権のみです。

参照:パフォーマンス カウンターが SecurityException をスローする

MSDNのドキュメントには、インストール中にそれらを作成する追加の理由が含まれています。

アプリケーションの実行時ではなく、アプリケーションのインストール時に新しいパフォーマンス カウンター カテゴリを作成することを強くお勧めします。これにより、オペレーティング システムが登録済みのパフォーマンス カウンター カテゴリのリストを更新する時間ができます。リストが更新されていない場合、カテゴリを使用しようとすると失敗します。

于 2012-09-26T09:26:55.103 に答える