| /* | |
| Shell Registry Access | |
| */ | |
| #include <string.h> | |
| #include <stdio.h> | |
| #include "winerror.h" | |
| #include "winreg.h" | |
| #include "debugtools.h" | |
| #include "winnls.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 [SHELL32.509] | |
| * | |
| */ | |
| 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 [NT4.0:SHELL32.511] | |
| * | |
| * 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; | |
| } | |
| /************************************************************************* | |
| * SHRegDeleteKeyA [SHELL32] | |
| */ | |
| HRESULT WINAPI SHRegDeleteKeyA( | |
| HKEY hkey, | |
| LPCSTR pszSubKey) | |
| { | |
| FIXME("hkey=0x%08x, %s\n", hkey, debugstr_a(pszSubKey)); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHRegDeleteKeyW [SHELL32.512] | |
| */ | |
| HRESULT WINAPI SHRegDeleteKeyW( | |
| HKEY hkey, | |
| LPCWSTR pszSubKey) | |
| { | |
| FIXME("hkey=0x%08x, %s\n", hkey, debugstr_w(pszSubKey)); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHRegCloseKey [NT4.0:SHELL32.505] | |
| * | |
| */ | |
| HRESULT WINAPI SHRegCloseKey (HKEY hkey) | |
| { | |
| TRACE("0x%04x\n",hkey); | |
| return RegCloseKey( hkey ); | |
| } | |
| /* 16-bit functions */ | |
| /* 0 and 1 are valid rootkeys in win16 shell.dll and are used by | |
| * some programs. Do not remove those cases. -MM | |
| */ | |
| static inline void fix_win16_hkey( HKEY *hkey ) | |
| { | |
| if (*hkey == 0 || *hkey == 1) *hkey = HKEY_CLASSES_ROOT; | |
| } | |
| /****************************************************************************** | |
| * RegOpenKey16 [SHELL.1] | |
| */ | |
| DWORD WINAPI RegOpenKey16( HKEY hkey, LPCSTR name, LPHKEY retkey ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegOpenKeyA( hkey, name, retkey ); | |
| } | |
| /****************************************************************************** | |
| * RegCreateKey16 [SHELL.2] | |
| */ | |
| DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR name, LPHKEY retkey ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegCreateKeyA( hkey, name, retkey ); | |
| } | |
| /****************************************************************************** | |
| * RegCloseKey16 [SHELL.3] | |
| */ | |
| DWORD WINAPI RegCloseKey16( HKEY hkey ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegCloseKey( hkey ); | |
| } | |
| /****************************************************************************** | |
| * RegDeleteKey16 [SHELL.4] | |
| */ | |
| DWORD WINAPI RegDeleteKey16( HKEY hkey, LPCSTR name ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegDeleteKeyA( hkey, name ); | |
| } | |
| /****************************************************************************** | |
| * RegSetValue16 [SHELL.5] | |
| */ | |
| DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR name, DWORD type, LPCSTR data, DWORD count ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegSetValueA( hkey, name, type, data, count ); | |
| } | |
| /****************************************************************************** | |
| * RegQueryValue16 [SHELL.6] | |
| * | |
| * NOTES | |
| * Is this HACK still applicable? | |
| * | |
| * HACK | |
| * The 16bit RegQueryValue doesn't handle selectorblocks anyway, so we just | |
| * mask out the high 16 bit. This (not so much incidently) hopefully fixes | |
| * Aldus FH4) | |
| */ | |
| DWORD WINAPI RegQueryValue16( HKEY hkey, LPCSTR name, LPSTR data, LPDWORD count ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| if (count) *count &= 0xffff; | |
| return RegQueryValueA( hkey, name, data, count ); | |
| } | |
| /****************************************************************************** | |
| * RegEnumKey16 [SHELL.7] | |
| */ | |
| DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD index, LPSTR name, DWORD name_len ) | |
| { | |
| fix_win16_hkey( &hkey ); | |
| return RegEnumKeyA( hkey, index, name, name_len ); | |
| } |