From 94307ac7ec767537efe49db8596d04982d7c09e0 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sun, 15 Nov 2009 19:08:27 +0000 Subject: [PATCH 1/1] - Implement reading user shell folders from registry See issue #4206 for more details. svn path=/trunk/; revision=44177 --- reactos/dll/win32/shell32/shellpath.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/reactos/dll/win32/shell32/shellpath.c b/reactos/dll/win32/shell32/shellpath.c index 5a39c8390b8..76fc17c3bf2 100644 --- a/reactos/dll/win32/shell32/shellpath.c +++ b/reactos/dll/win32/shell32/shellpath.c @@ -1011,7 +1011,9 @@ static HRESULT _SHGetUserShellFolderPath(HKEY rootKey, LPCWSTR userPrefix, */ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath) { + DWORD dwSize; HRESULT hr; + HKEY hKey; WCHAR resourcePath[MAX_PATH]; LPCWSTR pDefaultPath = NULL; @@ -1022,6 +1024,18 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath) if (!pszPath) return E_INVALIDARG; + if (RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + /* FIXME assume MAX_PATH size */ + dwSize = MAX_PATH * sizeof(WCHAR); + if (RegQueryValueExW(hKey, CSIDL_Data[folder].szValueName, NULL, NULL, (LPBYTE)pszPath, &dwSize) == ERROR_SUCCESS) + { + RegCloseKey(hKey); + return S_OK; + } + RegCloseKey(hKey); + } + if (CSIDL_Data[folder].szDefaultPath && IS_INTRESOURCE(CSIDL_Data[folder].szDefaultPath)) { -- 2.17.1