Windows API一日一练(65)RegQueryValueEx函数
2008-04-08 23:41
477 查看
上一次介绍怎么样保存数据到注册表里,这次就需要从注册表里读取数据出来了。在这个例子里是读取字符串数据出来,主要调用函数RegQueryValueEx来实现。下面的例子里就是先查询键值的长度,然后再读取内容出来。 函数RegQueryValueEx声明如下: WINADVAPILONGAPIENTRYRegQueryValueExA ( __in HKEY hKey, __in_opt LPCSTR lpValueName, __reserved LPDWORD lpReserved, __out_opt LPDWORD lpType, __out_bcount_opt(*lpcbData) LPBYTE lpData, __inout_opt LPDWORD lpcbData );WINADVAPILONGAPIENTRYRegQueryValueExW ( __in HKEY hKey, __in_opt LPCWSTR lpValueName, __reserved LPDWORD lpReserved, __out_opt LPDWORD lpType, __out_bcount_opt(*lpcbData) LPBYTE lpData, __inout_opt LPDWORD lpcbData );#ifdef UNICODE#define RegQueryValueEx RegQueryValueExW#else#define RegQueryValueEx RegQueryValueExA#endif // !UNICODE hKey是主键。lpValueName是键值名称。lpType是类型。lpData是读出来数据保存地方。lpcbData是读取数据多少。 调用函数的例子如下:#001 //打注册表返回值。HKEY_CURRENT_USER/"Software"/"Wincpp"/"testreg"#002 // /"Windows"//"winsize" = "800*600"#003 //蔡军生 2007/11/05 QQ:9073204 深圳#004 std::wstring GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,#005 LPCTSTR lpszDefault)#006 {#007 //打开应用程序键。#008 HKEY hAppKey = GetAppRegistryKey();#009 if (hAppKey == NULL)#010 {#011 return lpszDefault;#012 } #013 #014 HKEY hSecKey = NULL;#015 DWORD dw;#016 #017 //打开子键。#018 RegCreateKeyEx(hAppKey, lpszSection, 0, REG_NONE,#019 REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL,#020 &hSecKey, &dw);#021 RegCloseKey(hAppKey);#022 #023 if (hSecKey == NULL)#024 {#025 return lpszDefault;#026 } #027 #028 //查询键值。#029 std::wstring strValue;#030 DWORD dwType=REG_NONE;#031 DWORD dwCount=0;#032 #033 //先查询键值的长度。#034 LONG lResult = RegQueryValueEx(hSecKey, (LPTSTR)lpszEntry, NULL, &dwType,#035 NULL, &dwCount);#036 if (lResult == ERROR_SUCCESS)#037 { #038 strValue.resize(dwCount);#039 #040 //查询键值。#041 lResult = RegQueryValueEx(hSecKey, (LPTSTR)lpszEntry, NULL, &dwType,#042 (LPBYTE)strValue.data(), &dwCount);#043 #044 }#045 #046 RegCloseKey(hSecKey);#047 if (lResult == ERROR_SUCCESS)#048 { #049 return strValue;#050 }#051 #052 return lpszDefault; #053 }
相关文章推荐
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- Windows API一日一练(65)RegQueryValueEx函数
- RegQueryValueEx函数
- RegQueryValueEx函数返回234错误解决方法
- 【小问】RegQueryValueEx函数返回居然是1,“错误的函数”?
- 操作注册表的API函数介绍(RegQueryValueEx:该函数用来查找一个给定类型和值的注册表项)
- Windows API一日一练(64) RegSetValueEx和RegDeleteValue函数
- RegQueryValueEx函数使用
- RegQueryValueEx函数不能获取到键值?
- Windows API一日一练(64) RegSetValueEx和RegDeleteValue函数
- RegQueryValueEx函数
- RegQueryValueEx函数
- RegQueryValueEx函数返回234错误解决方法