当我在Windows 10之前的Windows版本中工作时,能够启动特定可执行文件时调用调试器。为此,我创建了以下批处理文件:
@echo off
>%temp%\output.reg echo Windows Registry Editor Version 5.00
>>%temp%\output.reg echo+
>>%temp%\output.reg echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regsvr32.exe]
>>%temp%\output.reg echo "debugger"="vsjitdebugger.exe"
regedit /s %temp%\output.reg
del %temp\output.reg
为了阻止它,我用了:
@echo off
>%temp%\output.reg echo Windows Registry Editor Version 5.00
>>%temp%\output.reg echo+
>>%temp%\output.reg echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regsvr32.exe]
>>%temp%\output.reg echo "debugger"=-
regedit /s %temp%\output.reg
del %temp\output.reg
当然,这些文件专门用于regsvr32.exe
。我还有其他可执行文件。
但是,在Windows 10下使用此技巧时,它无法工作。我会得到错误:
启动'regsvr32“ my.dll”'时发生错误:
未通知Visual Studio即时调试器应用程序正确启动。
有关“及时调试,错误”的信息,请查阅文档索引。
我不知道它指的是什么文档索引,但是我发现这是一个权限问题,因此我尝试将vsjitdebugger.exe
文件上的设置更改为Run this program as an administrator
,我得到一个不同的错误对话框,说:
C:\ WINDOWS \ system32 \ regsvr32.exe
请求的操作需要提升。
现在,如果要打开Administrator cmd窗口并使用以下命令:
vsjitdebugger.exe regsvr32 "my.dll"
这确实会在regsvr32.exe
应用程序启动时调用调试器。但是,此技巧的目的是确保在任何东西执行应用程序时调用调试器,而这可能不在我控制的cmd进程下。
所以我有2个问题。
答案 0 :(得分:0)
我有同样的问题。不知道为什么,但是很明显,在Windows 10上有必要在注册表中进行配置,据我所记得,以前没有必要进行配置,或者在安装Visual Studio时会自动发生。
在注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
中,添加一个值为“ 1”的类型为“ String”的名为“ Auto”的项。
编辑:此处在“疑难解答”中提到:https://docs.microsoft.com/en-us/visualstudio/debugger/debug-using-the-just-in-time-debugger#jit_errors