注册表项查询的一般操作流程
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("\\"));
}
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("\\"));
}
相关文章推荐
- Video4linux2一般操作流程
- jbpm流程定义基本操作 布署 查询 删除
- c文件操作的一般流程
- Mybatis操作数据库实现单表/多表查询流程
- 【git】git一般操作流程
- 网站SEO的一般操作流程
- appstore上架一般操作流程
- SQL查询操作处理流程
- 用户操作Linux的一般常用查询
- 关于V4L2中操作比较重要的几个命令以及一般操作流程总结
- SQL查询操作处理流程
- 数据查询操作浏览器分页流程及代码
- windows下mysql慢查询开启的操作流程
- windows下mysql慢查询开启的操作流程
- 关于V4L2中操作比较重要的几个命令以及一般操作流程总结
- Video4linux2一般操作流程
- solrj 查询SolrServer的一般流程
- 基金定投的一般流程是怎样的 基金定投怎么操作安全?
- 关于V4L2中操作比较重要的几个命令以及一般操作流程总结
- SQL 操作————简单查询初探