Удаление целых ключей кажется слишком «молотковым» подходом.
Сначала , можно использовать функции Windows API SetErrorMode
и / или SetThreadErrorMode
. Их также можно вызывать из приложения .NET.
Связанные подписи для PInvoke:
public enum ErrorMode : uint
{
SEM_DEFAULT = 0x0000,
SEM_FAILCRITICALERRORS = 0x0001,
SEM_NOGPFAULTERRORBOX = 0x0002,
SEM_NOALIGNMENTFAULTEXCEPT = 0x0004,
SEM_NOOPENFILEERRORBOX = 0x8000
}
[DllImport("Kernel32.dll")]
public static extern ErrorMode SetErrorMode(ErrorMode mode); //available since XP
[DllImport("Kernel32.dll")]
public static extern ErrorMode GetErrorMode(); //available since Vista
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetThreadErrorMode(ErrorMode newMode, out ErrorMode oldMode); //available since Windows 7
[DllImport("Kernel32.dll")]
public static extern ErrorMode GetThreadErrorMode(); //available since Windows 7
Во-вторых, , существует более специфичное решение на основе реестра, начиная с Vista:
Исключая только это приложение из отлаженного. Смотрите это:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb204634(v=vs.85).aspx
Copy-Paste:
Исключение приложения из автоматической отладки
Следующая процедура описывает, как исключить приложение из автоматической отладки после того, как значение Auto для клавиши AeDebug
установлено в 1.
-> Чтобы исключить приложение из автоматической отладки
перейти к следующему разделу реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
Добавьте значение REG_DWORD к подразделу AutoExclusionList
, где имя - это имя исполняемого файла, а значение - 1.
По умолчанию диспетчер окон рабочего стола (Dwm.exe) исключен из автоматической отладки, поскольку в противном случае может возникнуть системная тупик, если Dwm.exe перестает отвечать (пользователь не может видеть интерфейс, отображаемый отладчиком из-за Dwm. exe не отвечает, и Dwm.exe не может завершить работу, поскольку он удерживается отладчиком).
Windows Server 2003 и Windows XP: Подраздел AutoExclusionList недоступен; таким образом, вы не можете исключить ни одно приложение, включая Dwm.exe, из автоматической отладки.
Записи реестра AeDebug по умолчанию можно представить следующим образом:
HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Windows NT
CurrentVersion
AeDebug
Auto = 1
AutoExclusionList
DWM.exe = 1