我正在开发一个使用 Profiling API 即时重写 IL 指令的模拟工具。通常,我们的客户拥有不止一种使用 Profiling API 的商业产品,并且在许多情况下,我们的分析器不会被加载。
我想通过检测 .NET 分析器的存在来改善客户体验。如果找到第三方分析器,我想打印一条消息,帮助客户正确配置他们的环境。
到目前为止,我还没有找到一种可靠的方法来检测 .NET 探查器的存在。我考虑过解析 ID 为 1022 的 Windows 应用程序日志消息并尝试按进程 ID 进行匹配,但它似乎很不稳定。我检查了 SSCLI 实现,结果发现有一个函数IsProfilerPresent()可以进行所需的检查。我可以使用类似的公共 Microsoft API 吗?