/* Shell Registry Access */ #include #include #include "winerror.h" #include "winreg.h" #include "debugtools.h" #include "winnls.h" #include "winversion.h" #include "heap.h" #include "shellapi.h" #include "shlobj.h" #include "shell32_main.h" #include "wine/undocshell.h" DEFAULT_DEBUG_CHANNEL(shell); /************************************************************************* * SHRegOpenKeyA [SHELL32.506] * */ HRESULT WINAPI SHRegOpenKeyA( HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult) { TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult); return RegOpenKeyA(hKey, lpSubKey, phkResult); } /************************************************************************* * SHRegOpenKeyW [NT4.0:SHELL32.507] * */ HRESULT WINAPI SHRegOpenKeyW ( HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey) { WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey); return RegOpenKeyW( hkey, lpszSubKey, retkey ); } /************************************************************************* * SHRegQueryValueExA SHQueryValueExA [SHELL32.509][SHLWAPI.@] * */ HRESULT WINAPI SHRegQueryValueExA( HKEY hkey, LPSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) { TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData); } /************************************************************************* * SHRegQueryValueW [NT4.0:SHELL32.510] * */ HRESULT WINAPI SHRegQueryValueW( HKEY hkey, LPWSTR lpszSubKey, LPWSTR lpszData, LPDWORD lpcbData ) { WARN("0x%04x %s %p %p semi-stub\n", hkey, debugstr_w(lpszSubKey), lpszData, lpcbData); return RegQueryValueW( hkey, lpszSubKey, lpszData, lpcbData ); } /************************************************************************* * SHRegQueryValueExW, SHQueryValueExW [NT4.0:SHELL32.511][SHLWAPI.@] * * FIXME * if the datatype REG_EXPAND_SZ then expand the string and change * *pdwType to REG_SZ. */ HRESULT WINAPI SHRegQueryValueExW ( HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData) { DWORD ret; WARN("0x%04x %s %p %p %p %p semi-stub\n", hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData); ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData); return ret; } /* SHGetValue: Gets a value from the registry */ /************************************************************************* * SHGetValueA * * Gets a value from the registry */ DWORD WINAPI SHGetValueA( HKEY hkey, LPCSTR pSubKey, LPCSTR pValue, LPDWORD pwType, LPVOID pvData, LPDWORD pbData) { HKEY hSubKey; DWORD res; TRACE("(%s %s)\n", pSubKey, pValue); if((res = RegOpenKeyA(hkey, pSubKey, &hSubKey))) return res; res = RegQueryValueExA(hSubKey, pValue, 0, pwType, pvData, pbData); RegCloseKey( hSubKey ); return res; } /************************************************************************* * SHGetValueW * * Gets a value from the registry */ DWORD WINAPI SHGetValueW( HKEY hkey, LPCWSTR pSubKey, LPCWSTR pValue, LPDWORD pwType, LPVOID pvData, LPDWORD pbData) { HKEY hSubKey; DWORD res; TRACE("(%s %s)\n", debugstr_w(pSubKey), debugstr_w(pValue)); if((res = RegOpenKeyW(hkey, pSubKey, &hSubKey))) return res; res = RegQueryValueExW(hSubKey, pValue, 0, pwType, pvData, pbData); RegCloseKey( hSubKey ); return res; } /* gets a user-specific registry value. */ /************************************************************************* * SHRegGetUSValueA * * Gets a user-specific registry value */ LONG WINAPI SHRegGetUSValueA( LPCSTR pSubKey, LPCSTR pValue, LPDWORD pwType, LPVOID pvData, LPDWORD pbData, BOOL fIgnoreHKCU, LPVOID pDefaultData, DWORD wDefaultDataSize) { FIXME("(%p),stub!\n", pSubKey); return ERROR_SUCCESS; /* return success */ } /************************************************************************* * SHRegGetUSValueW * * Gets a user-specific registry value */ LONG WINAPI SHRegGetUSValueW( LPCWSTR pSubKey, LPCWSTR pValue, LPDWORD pwType, LPVOID pvData, LPDWORD pbData, BOOL flagIgnoreHKCU, LPVOID pDefaultData, DWORD wDefaultDataSize) { FIXME("(%p),stub!\n", pSubKey); return ERROR_SUCCESS; /* return success */ } /************************************************************************* * SHRegGetBoolUSValueA */ BOOL WINAPI SHRegGetBoolUSValueA( LPCSTR pszSubKey, LPCSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault) { FIXME("%s %s\n", pszSubKey,pszValue); return fDefault; } /************************************************************************* * SHRegGetBoolUSValueW */ BOOL WINAPI SHRegGetBoolUSValueW( LPCWSTR pszSubKey, LPCWSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault) { FIXME("%s %s\n", debugstr_w(pszSubKey),debugstr_w(pszValue)); return fDefault; } /************************************************************************* * SHRegQueryUSValueA [SHLWAPI] */ LONG WINAPI SHRegQueryUSValueA( HKEY/*HUSKEY*/ hUSKey, LPCSTR pszValue, LPDWORD pdwType, void *pvData, LPDWORD pcbData, BOOL fIgnoreHKCU, void *pvDefaultData, DWORD dwDefaultDataSize) { FIXME("%s stub\n",pszValue); return 1; } /************************************************************************* * SHRegGetPathA */ DWORD WINAPI SHRegGetPathA( HKEY hKey, LPCSTR pcszSubKey, LPCSTR pcszValue, LPSTR pszPath, DWORD dwFlags) { FIXME("%s %s\n", pcszSubKey, pcszValue); return 0; } /************************************************************************* * SHRegGetPathW */ DWORD WINAPI SHRegGetPathW( HKEY hKey, LPCWSTR pcszSubKey, LPCWSTR pcszValue, LPWSTR pszPath, DWORD dwFlags) { FIXME("%s %s\n", debugstr_w(pcszSubKey), debugstr_w(pcszValue)); return 0; } /************************************************************************* * SHRegDeleteKeyA and SHDeleteKeyA */ HRESULT WINAPI SHRegDeleteKeyA( HKEY hkey, LPCSTR pszSubKey) { FIXME("hkey=0x%08x, %s\n", hkey, debugstr_a(pszSubKey)); return 0; } /************************************************************************* * SHRegDeleteKeyW and SHDeleteKeyA */ HRESULT WINAPI SHRegDeleteKeyW( HKEY hkey, LPCWSTR pszSubKey) { FIXME("hkey=0x%08x, %s\n", hkey, debugstr_w(pszSubKey)); return 0; } /************************************************************************* * SHSetValueA [SHLWAPI] */ DWORD WINAPI SHSetValueA( HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwType, LPCVOID pvData, DWORD cbData) { FIXME("(%s %s)stub\n",pszSubKey, pszValue); return 1; } /************************************************************************* * SHRegCloseKey [NT4.0:SHELL32.505] * */ HRESULT WINAPI SHRegCloseKey (HKEY hkey) { TRACE("0x%04x\n",hkey); return RegCloseKey( hkey ); }