2

プロファイリング API を使用してその場で IL 命令を書き換えるモック ツールに取り組んでいます。多くの場合、お客様はプロファイリング API を使用する複数の商用製品を所有しており、多くのシナリオでプロファイラーが読み込まれません。

.NET プロファイラーの存在を検出して、カスタマー エクスペリエンスを改善したいと考えています。サード パーティのプロファイラーが見つかった場合に備えて、お客様が環境を適切に構成するのに役立つメッセージを出力したいと思います。

これまでのところ、.NET プロファイラーの存在を検出する信頼できる方法は見つかりませんでした。Windows アプリケーション ログ メッセージを ID 1022 で解析し、プロセス ID で照合しようと考えましたが、かなり不安定なようです。SSCLI の実装を確認したところ、必要なチェックを行う関数IsProfilerPresent()があることがわかりました。使用できる同様のパブリック Microsoft API はありますか?

4

1 に答える 1

0

Microsoft は、プロファイラーが共通言語ランタイム (CLR) によるプログラムの実行を監視できるようにするUnmanaged Profiling API を提供しています。API は、プロセスがプロファイラーに接続する必要があるかどうかを示す 2 つの環境変数を参照します。これらは

  • COR_ENABLE_PROFILING: CLR は、この環境変数が存在し、1 に設定されている場合にのみ、プロファイラーに接続します。
  • COR_PROFILER: COR_ENABLE_PROFILING チェックに合格すると、CLR はこの CLSID または ProgID を持つプロファイラーに接続します。この CLSID または ProgID は、以前にレジストリに格納されている必要があります。COR_PROFILER 環境変数は文字列として定義されます。

ここから撮影

私はアプリケーションのプロファイリングの専門家ではありませんが、API は必要なソースのようです。

于 2013-01-31T13:17:47.513 に答える