editValueName = valueName;
lRet = RegQueryValueExW(hKey, valueName, 0, &type, 0, &valueDataLen);
- if (lRet != ERROR_SUCCESS && (!wcscmp(valueName, L"") || valueName == NULL))
+ if (lRet != ERROR_SUCCESS && (valueName == NULL || !valueName[0]))
{
lRet = ERROR_SUCCESS; /* Allow editing of (Default) values which don't exist */
type = REG_SZ;
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
valueName = GetValueName(g_pChildWnd->hListWnd, -1);
- if (keyPath)
- {
- lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey);
- if (lRet != ERROR_SUCCESS) hKey = 0;
- }
+
+ if (!keyPath)
+ return TRUE;
+
+ lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey);
+ if (lRet != ERROR_SUCCESS)
+ hKey = 0;
switch (LOWORD(wParam))
{
*/
#include "regedit.h"
+#include <strsafe.h>
const WCHAR g_szGeneralRegKey[] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit";
rootName = get_root_key_name(hRootKey);
/* Load "My Computer" string and complete it */
- LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer));
- wcscat(szBuffer, L"\\"); wcscat(szBuffer, rootName);
- wcscat(szBuffer, L"\\"); wcscat(szBuffer, keyPath);
-
- RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR));
+ if (LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)) &&
+ SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), L"\\")) &&
+ SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), rootName)) &&
+ SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), L"\\")) &&
+ SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), keyPath)))
+ {
+ RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR));
+ }
}
/* Get statusbar settings */