[EXPLORER][SHELL32] Strengthen Start Menu Customize Part 1 (#6544)
[reactos.git] / base / shell / explorer / util.cpp
index 01b234b..f6824cc 100644 (file)
@@ -140,48 +140,27 @@ FormatMenuString(IN HMENU hMenu,
     return FALSE;
 }
 
-BOOL
-GetExplorerRegValueSet(IN HKEY hKey,
-                       IN LPCWSTR lpSubKey,
-                       IN LPCWSTR lpValue)
+BOOL GetRegBool(IN LPCWSTR pszSubKey, IN LPCWSTR pszValueName, IN BOOL bDefaultValue)
 {
-    WCHAR szBuffer[MAX_PATH];
-    HKEY hkSubKey;
-    DWORD dwType, dwSize;
-    BOOL Ret = FALSE;
-
-    StringCbCopyW(szBuffer, sizeof(szBuffer),
-                  L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer");
-    if (FAILED_UNEXPECTEDLY(StringCbCatW(szBuffer, sizeof(szBuffer), L"\\")))
-        return FALSE;
-    if (FAILED_UNEXPECTEDLY(StringCbCatW(szBuffer, sizeof(szBuffer), lpSubKey)))
-        return FALSE;
+    return SHRegGetBoolUSValueW(pszSubKey, pszValueName, FALSE, bDefaultValue);
+}
 
-    dwSize = sizeof(szBuffer);
-    if (RegOpenKeyExW(hKey,
-                      szBuffer,
-                      0,
-                      KEY_QUERY_VALUE,
-                      &hkSubKey) == ERROR_SUCCESS)
-    {
-        ZeroMemory(szBuffer, sizeof(szBuffer));
-
-        if (RegQueryValueExW(hkSubKey,
-                             lpValue,
-                             0,
-                             &dwType,
-                             (LPBYTE)szBuffer,
-                             &dwSize) == ERROR_SUCCESS)
-        {
-            if ((dwType == REG_DWORD) && (dwSize == sizeof(DWORD)))
-                Ret = *((PDWORD)szBuffer) != 0;
-            else if (dwSize > 0)
-                Ret = *((PWCHAR)szBuffer) != 0;
-        }
+BOOL SetRegDword(IN LPCWSTR pszSubKey, IN LPCWSTR pszValueName, IN DWORD dwValue)
+{
+    return (SHRegSetUSValueW(pszSubKey, pszValueName, REG_DWORD, &dwValue,
+                             sizeof(dwValue), SHREGSET_FORCE_HKCU) == ERROR_SUCCESS);
+}
 
-        RegCloseKey(hkSubKey);
-    }
-    return Ret;
+#define REGKEY_ADVANCED L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
+
+BOOL GetAdvancedBool(IN LPCWSTR pszValueName, IN BOOL bDefaultValue)
+{
+    return GetRegBool(REGKEY_ADVANCED, pszValueName, bDefaultValue);
+}
+
+BOOL SetAdvancedDword(IN LPCWSTR pszValueName, IN DWORD dwValue)
+{
+    return SetRegDword(REGKEY_ADVANCED, pszValueName, dwValue);
 }
 
 BOOL