Como alterar o tratamento de pop-up de erro no Windows
Em um ambiente autônomo, você pode querer enviar automaticamente pop-ups de erro rígidos que exigem intervenção do usuário. Este artigo fornece o código necessário para alterar o modo pop-up de erro rígido.
Versão original do produto: Windows
Número de KB original: 128642
Resumo
O Windows permite que o usuário altere o tratamento de pop-ups de erro rígido resultantes de erros de aplicativo e sistema. Esses erros não incluem nenhum disco na unidade e falhas de GP (proteção geral).
Esses eventos fazem com que um pop-up de erro difícil seja exibido, o que requer a intervenção do usuário para despachar. Esse comportamento pode ser modificado para que esses erros sejam registrados no log de eventos do Windows. Quando o erro é registrado no log de eventos, nenhuma intervenção do usuário é necessária e o sistema fornece um manipulador padrão para o erro rígido. O usuário pode examinar o log de eventos para determinar a causa do erro rígido.
Entrada do Registro
A entrada do registro a seguir controla o tratamento de pop-up de erro rígido no Windows:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode
Modos válidos
A seguir estão valores válidos para ErrorMode
:
Modo 0
Esse é o modo operacional padrão que serializa os erros e aguarda uma resposta.
Modo 1
Se o erro não for proveniente do sistema, este será o modo operacional normal. Se o erro for proveniente do sistema, isso registrará o erro no log de eventos e retornará OK para o erro difícil. Nenhuma intervenção é necessária e o pop-up não é visto.
Modo 2
Isso sempre registra o erro no log de eventos e retorna OK para o erro difícil. Pop-ups não são vistos.
Em todos os modos, erros rígidos originados pelo sistema são registrados no log do sistema. Para executar um servidor autônomo, use o modo 2.
Código de exemplo para alterar o modo pop-up de erro rígido
A função a seguir altera o modo pop-up de erro rígido. Se a função for bem-sucedida, o valor retornado será TRUE. Se a função falhar, o valor retornado será FALSE.
BOOL SetGlobalErrorMode(
DWORD dwErrorMode // specifies new ErrorMode value
)
{
HKEY hKey;
LONG lRetCode;
// make sure the value passed isn't out-of-bounds
if (dwErrorMode > 2)
return FALSE;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\Windows",
0,
KEY_SET_VALUE,
&hKey) != ERROR_SUCCESS)
return FALSE;
lRetCode=RegSetValueEx(hKey,
"ErrorMode",
0,
REG_DWORD,
(CONST BYTE *) &dwErrorMode,
sizeof(DWORD));
RegCloseKey(hKey);
if (lRetCode != ERROR_SUCCESS)
return FALSE;
return TRUE;
}
Código de exemplo para obter o modo pop-up de erro rígido
A função a seguir obtém o modo pop-up de erro rígido. Se a função for bem-sucedida, o valor retornado será TRUE. Se a função falhar, o valor retornado será FALSE. Se a função for bem-sucedida, dwErrorMode
contém o modo pop-up de erro. Caso contrário, dwErrorMode
é indefinido.
BOOL GetGlobalErrorMode(
LPDWORD dwErrorMode // Pointer to a DWORD to place popup mode
)
{
HKEY hKey;
LONG lRetCode;
DWORD cbData=sizeof(DWORD);
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\Windows",
0,
KEY_QUERY_VALUE,
&hKey) != ERROR_SUCCESS)
return FALSE;
lRetCode=RegQueryValueEx(hKey,
"ErrorMode",
0,
NULL,
(LPBYTE) dwErrorMode,
&cbData);
RegCloseKey(hKey);
if (lRetCode != ERROR_SUCCESS)
return FALSE;
return TRUE;
}