307 lines
6.7 KiB
C
307 lines
6.7 KiB
C
/*
|
|
Shell Registry Access
|
|
*/
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#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 );
|
|
}
|