2015-09-17 4 views
1

Я пытаюсь обнаружить отладчик, и я получаю сообщение об ошибке «Не удается разрешить символ« Dte »даже с ссылкой envdte. Google ничего не дает. Спасибо.Не удается разрешить символ «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) { 

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