是否有方法检测附加的调试器是否为远程调试器

本文关键字:调试器 是否 有方法 检测 | 更新日期: 2023-09-27 18:16:19

使用System.Diagnostics.Debugger.Debugger.IsAttached,我可以告诉调试器是附加的。是否有一种方法来检测是否附加的调试器是远程调试器(Visual Studio Remote Debugger Monitor)?

是否有方法检测附加的调试器是否为远程调试器

您可以从kernel32.dll中使用本机CheckRemoteDebuggerPresent

从MSDN:

CheckRemoteDebuggerPresent中的"remote"并不意味着调试器必须驻留在另一台计算机上;相反,它指示调试器驻留在单独的并行中。

你可以这样使用:

[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
static extern bool CheckRemoteDebuggerPresent(IntPtr hProcess, ref bool isDebuggerPresent);
public static void Main()
{
    bool isDebuggerPresent = false;
    CheckRemoteDebuggerPresent(Process.GetCurrentProcess().Handle, ref isDebuggerPresent);
    Console.WriteLine(string.Format("Debugger Attached: {0}", isDebuggerPresent));
    Console.ReadLine();
}