INT iFreeLdrIni;
} STARTINFO, *PSTARTINFO;
+BOOL SaveRecoveryOptions;
static VOID
SetTimeout(HWND hwndDlg, INT Timeout)
HKEY hKey;
DWORD lResult;
- if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
- L"System\\CurrentControlSet\\Control\\CrashControl",
- 0,
- KEY_WRITE,
- &hKey) != ERROR_SUCCESS)
- {
- /* Failed to open key */
+ lResult = (DWORD)RegCreateKeyExW(HKEY_LOCAL_MACHINE,
+ L"System\\CurrentControlSet\\Control\\CrashControl",
+ 0,
+ NULL,
+ REG_OPTION_NON_VOLATILE,
+ KEY_WRITE,
+ NULL,
+ &hKey,
+ NULL);
+ if (lResult != ERROR_SUCCESS)
+ {
+ /* Failed to open key */
+ SetLastError(lResult);
+ ShowLastWin32Error(hwndDlg);
+
return;
}
{
HKEY hKey;
WCHAR szName[MAX_PATH];
- DWORD dwValue, dwValueLength, dwType;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- L"System\\CurrentControlSet\\Control\\CrashControl",
- 0,
- KEY_READ,
- &hKey) != ERROR_SUCCESS)
+ DWORD dwValue, dwValueLength, dwType, dwResult;
+
+ dwResult = (DWORD)RegCreateKeyExW(HKEY_LOCAL_MACHINE,
+ L"System\\CurrentControlSet\\Control\\CrashControl",
+ 0,
+ NULL,
+ REG_OPTION_NON_VOLATILE,
+ KEY_READ,
+ NULL,
+ &hKey,
+ NULL);
+ if (dwResult != ERROR_SUCCESS)
{
/* Failed to open key */
+ SetLastError(dwResult);
+ ShowLastWin32Error(hwndDlg);
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECWRITEEVENT), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECSENDALERT), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECRESTART), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECDEBUGCOMBO), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECDUMPFILE), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_STRRECOVERWRITE), FALSE);
+
+ SaveRecoveryOptions = FALSE;
return;
}
SendDlgItemMessageW(hwndDlg, IDC_STRRECDEBUGCOMBO, CB_ADDSTRING, (WPARAM)0, (LPARAM) szName);
}
- if (LoadString(hApplet, IDS_FULL_DUMP, szName, sizeof(szName) / sizeof(WCHAR)))
+ if (LoadStringW(hApplet, IDS_FULL_DUMP, szName, sizeof(szName) / sizeof(WCHAR)))
{
szName[(sizeof(szName)/sizeof(WCHAR))-1] = L'\0';
SendDlgItemMessageW(hwndDlg, IDC_STRRECDEBUGCOMBO, CB_ADDSTRING, (WPARAM)0, (LPARAM) szName);
SetCrashDlgItems(hwndDlg, pStartInfo);
RegCloseKey(hKey);
+
+ SaveRecoveryOptions = TRUE;
}
}
}
- WriteStartupRecoveryOptions(hwndDlg, pStartInfo);
+ if (SaveRecoveryOptions)
+ {
+ WriteStartupRecoveryOptions(hwndDlg, pStartInfo);
+ }
+
EndDialog(hwndDlg,
LOWORD(wParam));
return TRUE;