无法使用envdte引用解析符号'Dte'

时间:2015-09-17 23:41:05

标签: c# envdte

我尝试检测调试器,我得到错误“无法解析符号'Dte'”即使使用envdte引用。谷歌什么也没给我。谢谢。

using EnvDTE;
namespace test
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            foreach (EnvDTE.Process p in Dte.Debugger.DebuggedProcesses) {
                if (p.ProcessID == spawnedProcess.Id) {

                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

C#是一种区分大小写的语言。

DTE(大写)不是Dtehttps://msdn.microsoft.com/en-us/library/envdte.dte.aspx

上的文档

答案 1 :(得分:0)

  

我需要检测是附加的调试器(如Ollydbg)

要检查进程是否附加了调试器,可以使用:

如何检查调试器是否已附加

  • CheckRemoteDebuggerPresent 适用于任何正在运行的进程,并检测本机调试程序。

  • Debugger.IsAttached 仅适用于当前进程,仅检测托管调试程序。例如, OllyDbg将不会被检测到。

<强> Code:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

public class DetectDebugger
{
    [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("Debugger Attached: " + isDebuggerPresent);
        Console.ReadLine();
    }
}