Windows'da sabit hata açılır pencere işlemeyi değiştirme

Katılımsız bir ortamda, kullanıcı müdahalesi gerektiren sabit hata açılır pencerelerini otomatik olarak göndermek isteyebilirsiniz. Bu makalede, sabit hata açılır modunu değiştirmek için ihtiyacınız olan kod verilmektedir.

Orijinal ürün sürümü: Windows
Özgün KB numarası: 128642

Özet

Windows, kullanıcının uygulama ve sistem hatalarından kaynaklanan sabit hata açılır pencerelerinin işlenmesini değiştirmesine olanak tanır. Bu tür hatalar sürücüde disk olmamasını ve genel koruma (GP) hatalarını içerir.

Bu olaylar, dağıtılması için kullanıcı müdahalesi gerektiren bir sabit hata açılan penceresinin görüntülenmesine neden olur. Bu davranış, bu tür hataların Windows olay günlüğüne kaydedilmesi için değiştirilebilir. Hata olay günlüğüne kaydedildiğinde kullanıcı müdahalesi gerekmez ve sistem sabit hata için varsayılan bir işleyici sağlar. Kullanıcı, sabit hatanın nedenini belirlemek için olay günlüğünü inceleyebilir.

Kayıt defteri girdisi

Aşağıdaki kayıt defteri girdisi Windows'ta sabit hata açılır pencere işlemesini denetler:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode

Geçerli modlar

aşağıdakiler için ErrorModegeçerli değerlerdir:

  • Mod 0

    Bu, hataları seri hale getiren ve yanıt bekleyen varsayılan işletim modudur.

  • Mod 1

    Hata sistemden gelmiyorsa, bu normal çalışma modudur. Hata sistemden geliyorsa bu, hatayı olay günlüğüne kaydeder ve sabit hataya Tamam döndürür. Müdahale gerekmez ve açılan pencere görülmez.

  • Mod 2

    Bu her zaman hatayı olay günlüğüne kaydeder ve sabit hataya Tamam döndürür. Açılan pencereler görünmez.

Tüm modlarda sistem kaynaklı sabit hatalar sistem günlüğüne kaydedilir. Katılımsız sunucu çalıştırmak için 2. modu kullanın.

Sabit hata açılan modunu değiştirmek için örnek kod

Aşağıdaki işlev, sabit hata açılır modunu değiştirir. İşlev başarılı olursa dönüş değeri TRUE olur. İşlev başarısız olursa dönüş değeri YANLIŞ olur.

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

Sabit hata açılır modunu almak için örnek kod

Aşağıdaki işlev, sabit hata açılır modunu alır. İşlev başarılı olursa dönüş değeri TRUE olur. İşlev başarısız olursa dönüş değeri YANLIŞ olur. İşlev başarılı olursa hata dwErrorMode açılan modunu içerir. Aksi takdirde tanımlanmamıştır dwErrorMode .

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