有没有办法检测附加的调试器是否是远程调试器?

时间:2014-08-04 08:44:36

标签: c# .net visual-studio remote-debugging

使用System.Diagnostics.Debugger.Debugger.IsAttached我可以告诉你附加了一个调试器。有没有办法检测附加的调试器是否是远程调试器(Visual Studio Remote Debugger Monitor)?

1 个答案:

答案 0 :(得分:3)

您可以使用kernel32.dll

中的原生CheckRemoteDebuggerPresent

来自MSDN

  

"遥控器"在CheckRemoteDebuggerPresent中并不意味着   调试器必然驻留在另一台计算机上;相反,它   表示调试器位于单独且并行的中   的过程。

您可以按如下方式使用它:

[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();
}