首页 > 解决方案 > 如何使用c#执行vsjitdebugger.exe

问题描述

我想使用以下代码为某些进程执行“vsjitdebugger.exe”:

var myapp = Process.Start(@"path\to\myapp.exe");
Process.Start("vsjitdebugger.exe", $"-p {myapp.Id}").WaitForExit();

但是失败了。
退出代码为“-1”,不显示窗口。

为了执行 vsjitdebugger.exe,我必须做什么?

UPATE #1
我只想立即将调试器附加到特定进程。
这就是为什么我提供代码方式而不是注册表方式。

以管理员身份执行:

var myapp = Process.Start(@"path\to\myapp.exe");
Process.Start(new ProcessStartInfo()
{
     FileName = @"vsjitdebugger.exe",
     Arguments = "-p {myapp.Id}",
     Verb = "runas"
}).WaitForExit();

UAC屏幕后也失败了。

标签: c#

解决方案


通过代码使用即时调试器对您不起作用,因为您必须以管理员权限运行才能使用它。

您可以做的是在您想要的进程上自动启动调试器。

在尝试通过 C# 执行进程之前,我建议在这里阅读更多关于 Visual Studio 的 JIT 的信息。

这根本不安全,被认为是不好的做法。除非有紧急需要,否则我建议您首先将所有其他可能性最大化。


推荐阅读