Oups with the attachement this time In shlwapi/reg.c there are many duplicated functions A/W, I think we can change that to A -> W calls, but it will be another patch. ChangeLog: - Implements SHRegSetUSValueA and SHRegSetUSValueW -- Maxime Bellengé <maxime.bellenge@laposte.net>
Index: dlls/shlwapi/reg.c =================================================================== RCS file: /home/wine/wine/dlls/shlwapi/reg.c,v retrieving revision 1.35 diff -u -r1.35 reg.c --- dlls/shlwapi/reg.c 2 Dec 2002 18:10:58 -0000 1.35 +++ dlls/shlwapi/reg.c 8 Mar 2003 11:53:24 -0000 @@ -396,7 +396,67 @@ if (ret == ERROR_SUCCESS) { ret = SHRegQueryUSValueW(myhuskey, pValue, pwType, pvData, pcbData, flagIgnoreHKCU, pDefaultData, - wDefaultDataSize); + wDefaultDataSize); + SHRegCloseUSKey(myhuskey); + } + return ret; +} + +/************************************************************************* + * SHRegSetUSValueA [SHLWAPI.@] + */ +LONG WINAPI SHRegSetUSValueA( + LPCSTR pszSubKey, + LPCSTR pszValue, + DWORD dwType, + LPVOID pvData, + DWORD cbData, + DWORD dwFlags) +{ + HUSKEY myhuskey; + LONG ret; + BOOL ignoreHKCU; + + if (!pvData) return ERROR_INVALID_FUNCTION; + TRACE("key '%s', value '%s', datalen %ld\n", + debugstr_a(pszSubKey), debugstr_a(pszValue), cbData); + + ignoreHKCU = ((dwFlags == SHREGSET_HKLM) || (dwFlags == SHREGSET_FORCE_HKLM)); + + ret = SHRegOpenUSKeyA(pszSubKey, 0x1, 0, &myhuskey, ignoreHKCU); + if (ret == ERROR_SUCCESS) { + ret = SHRegWriteUSValueA(myhuskey, pszValue, dwType, pvData, + cbData, dwFlags); + SHRegCloseUSKey(myhuskey); + } + return ret; +} + +/************************************************************************* + * SHRegSetUSValueW [SHLWAPI.@] + */ +LONG WINAPI SHRegSetUSValueW( + LPCWSTR pszSubKey, + LPCWSTR pszValue, + DWORD dwType, + LPVOID pvData, + DWORD cbData, + DWORD dwFlags) +{ + HUSKEY myhuskey; + LONG ret; + BOOL ignoreHKCU; + + if (!pvData) return ERROR_INVALID_FUNCTION; + TRACE("key '%s', value '%s', datalen %ld\n", + debugstr_w(pszSubKey), debugstr_w(pszValue), cbData); + + ignoreHKCU = ((dwFlags == SHREGSET_HKLM) || (dwFlags == SHREGSET_FORCE_HKLM)); + + ret = SHRegOpenUSKeyW(pszSubKey, 0x1, 0, &myhuskey, ignoreHKCU); + if (ret == ERROR_SUCCESS) { + ret = SHRegWriteUSValueW(myhuskey, pszValue, dwType, pvData, + cbData, dwFlags); SHRegCloseUSKey(myhuskey); } return ret; Index: dlls/shlwapi/shlwapi.spec =================================================================== RCS file: /home/wine/wine/dlls/shlwapi/shlwapi.spec,v retrieving revision 1.66 diff -u -r1.66 shlwapi.spec --- dlls/shlwapi/shlwapi.spec 15 Jan 2003 00:53:39 -0000 1.66 +++ dlls/shlwapi/shlwapi.spec 8 Mar 2003 11:53:25 -0000 @@ -594,8 +594,8 @@ @ stdcall SHRegQueryInfoUSKeyW ( long ptr ptr ptr ptr long ) SHRegQueryInfoUSKeyW @ stdcall SHRegQueryUSValueA ( long str ptr ptr ptr long ptr long ) SHRegQueryUSValueA @ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long ) SHRegQueryUSValueW -@ stub SHRegSetUSValueA -@ stub SHRegSetUSValueW +@ stdcall SHRegSetUSValueA ( str str long ptr long long) SHRegSetUSValueA +@ stdcall SHRegSetUSValueW ( wstr wstr long ptr long long) SHRegSetUSValueW @ stdcall SHRegWriteUSValueA (long str long ptr long long) SHRegWriteUSValueA @ stdcall SHRegWriteUSValueW (long str long ptr long long) SHRegWriteUSValueW @ stdcall SHSetValueA (long str str long ptr long) SHSetValueA