2015-09-17 41 views
1

我嘗試檢測調試器,即使使用envdte參考,我也會收到錯誤「Can not resolve symbol'Dte'」。谷歌沒有給我什麼。謝謝。無法使用envdte參考解析符號'Dte'

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

       } 
      } 
     } 
    } 
} 
+0

你在哪裏寫代碼?你在哪裏定義了Dte? –

+0

你沒有定義Dte。你應該定義'DTE Dte;'然後賦值給它,然後使用。 –

+0

我在這裏複製完整的代碼 – SLI

回答

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