您的位置:首页 > 其它

注册表项查询的一般操作流程

2017-04-07 10:55 239 查看
通常使用以下三个方法就可以达到。

RegOpenKey

RegQueryValueEx
RegCloseKey

后面简单的找了一些说明:

RegOpenKey

The RegOpenKey function opens the specified registry key.

Note  This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the RegOpenKeyEx function.

LONG RegOpenKey(

  HKEY hKey,

  LPCTSTR lpSubKey,

  PHKEY phkResult

);

RegQueryValueEx

检索一个已打开的注册表句柄中,指定的注册表键的类型和设置值。

返回值

Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码

参数表

参数 类型及说明

HKEY hKey,//一个已打开项的句柄,或者指定一个标准项名

LPCTSTR lpValueName,//要查询注册表键值的名字字符串,注册表键的名字,以空字符结束。

LPDWORD lpReserved,//未用,设为零

LPDWORD lpType,//用于装载取回数据类型的一个变量

LPBYTE lpData,//用于装载指定值的一个缓冲区

LPDWORD lpcbData,//用于装载lpData缓冲区长度的一个变量。 //一旦返回,它会设为实际装载到缓冲区的字节数

如果lpValueName是NULL或一个空字符串(""),这个函数找回这个键的未命名或默认值的类型和数据。 Windows 95和Windows 98: 每个键有一个默认值(最初的不包含数据)。在Windows 95,默认值类型总是REG_SZ。在Windows 98,默认键的类型最初是REG_SZ,但可以通过RegSetValueEx指定一个默认值为不同的类型。 Windows NT: 键不能自动拥有一个未命名或默认的值,未命名的值可以是任何类型。
lpReserved 保留,必须是NULL.

例子:

HKEY hResult;
TCHAR szVersion[50] = {0};

LONG nResult = RegOpenKey(HKEY_LOCAL_MACHINE, KEY_PATH, &hResult);

if(ERROR_SUCCESS != nResult)
return _T("0.0.0");

DWORD lValueSize = 50*sizeof(TCHAR), dwType = REG_SZ;

RegQueryValueEx(hResult, _T("Version"), NULL, &dwType,NULL, &lValueSize);// 20100413 mzy

nResult = RegQueryValueEx( hResult, _T("Version"), NULL, &dwType, 
(byte *)szVersion, &lValueSize);
if(ERROR_SUCCESS != nResult){
RegCloseKey(hResult);
return _T("0.0.0");
}
RegCloseKey(hResult);

// 获得系统安装路径
void GetProjectInstall(LPWSTR szPath)
{
HKEY hResult;
LONG nResult = RegOpenKey(HKEY_LOCAL_MACHINE, KEY_PATH, &hResult);

if(ERROR_SUCCESS != nResult)
{
return;
}

DWORD lValueSize = MAX_PATH, dwType = REG_SZ;
nResult = RegQueryValueEx(hResult, _T("Install"), NULL, &dwType, (LPBYTE)szPath, &lValueSize);
if(ERROR_SUCCESS != nResult)
{
RegCloseKey(hResult);
return;
}
RegCloseKey(hResult);

if(szPath[_tcslen(szPath)-1] != _T('\\'))
_tcscat(szPath, _T("\\"));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: