RegQueryValueEx函数不能获取到键值?
2015-07-28 14:49
309 查看
使用这个函数,返回值是0,但是获取到的键值只是字符串的第一个字母。这是为什么?谢谢。急求答案。 int _tmain(int argc, _TCHAR* argv[]) { const int MAX_BUFFER_LEN = 80; char szBuffer[MAX_BUFFER_LEN]; DWORD dwNameLen; dwNameLen = MAX_BUFFER_LEN; TCHAR aa[800]; if (!GetUserName(aa, &dwNameLen)) //得到计算机用户名 { return 1; } HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭 //打开与路径 data_Set相关的hKEY LPCTSTR data_Set = _T("Software\\Platformbaseinfo\\AppUrl\\"); //访问注册表,hKEY则保存此函数所打开的键的句柄 long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY)); if (ret0 != ERROR_SUCCESS)//如果无法打开hKEY,打开指定注册表失败,则中止程序的执行, { return 1; } //查询有关的数据 LPBYTE addr_Get = new BYTE[1024];//定义 DWORD type_1 = REG_SZ;//定义数据类型 DWORD cbData_1 = 1024;//定义数据长度 long ret1 = ::RegQueryValueEx(hKEY, aa, NULL, &type_1, addr_Get, &cbData_1); if (ret1 != ERROR_SUCCESS) { return 1; } //得到注册表中地址信息 delete[] addr_Get; //关闭打开的hKEY ::RegCloseKey(hKEY); return 0; } 该段代码中要获取数据的变量就是addr_Get,但是这个变量只读取到键值字符串的第一个字母,这个是为啥?
解答:
代码改为 红色部分为改动。
int _tmain(int argc, _TCHAR* argv[]){ const int MAX_BUFFER_LEN = 80; char szBuffer[MAX_BUFFER_LEN]; DWORD dwNameLen; dwNameLen = MAX_BUFFER_LEN; TCHAR aa[80]; if (!GetUserName(aa, &dwNameLen)) //得到计算机用户名 { return 1; } HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭 //打开与路径 data_Set相关的hKEY LPCTSTR data_Set = _T("Software\\Platformbaseinfo\\AppUrl\\"); //访问注册表,hKEY则保存此函数所打开的键的句柄 long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY)); if (ret0 != ERROR_SUCCESS)//如果无法打开hKEY,打开指定注册表失败,则中止程序的执行, { return 1; } //查询有关的数据 //LPBYTE addr_Get = new BYTE[1024];//定义 TCHAR addr_Get[500]; DWORD type_1 = REG_SZ;//定义数据类型 DWORD cbData_1 = 1024;//定义数据长度 long ret1 = ::RegQueryValueEx(hKEY, aa, NULL, &type_1, (LPBYTE)addr_Get, &cbData_1); if (ret1 != ERROR_SUCCESS) { return 1; } //得到注册表中地址信息 //关闭打开的hKEY ::RegCloseKey(hKEY);
相关文章推荐
- hdoj 1509 Windows Message Queue【优先队列】
- android常用UI使用案例:ImageSwitcher和Gallery
- 【kmp】hdu1171 Number Sequence
- leetcode 062 —— Unique Paths
- android常用UI使用案例:SeekBar
- FineUI初学手册-部分JS整理
- UITableiView
- hdoj 1509 Windows Message Queue 【STL 优先队列】
- UICollectionView中cell的border问题
- 232.Implement Queue using Stacks(用栈实现队列)
- android常用UI使用案例:DatePicker和TimerPicker
- android常用UI使用案例:Spinner
- [LeetCode] Unique Paths II
- Android API Guides 阅读笔记(5)----Loader
- Android Studio 1.3RC版 build加速
- duilib拖动控制功能的实现(源代码)
- iOS-UI-03 UITextField UIAlertView
- This File Does Not Exist At The Requested Revision
- android常用UI使用案例:AutoCompleteTextView
- 写在Demo战斗系统之前,先用原型工具做套UI第一篇-登录界面