有关注册表操作遇到的问题!!急急
部分代码如下
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,(unsigned char *)time,&dwLength)==ERROR_SUCCESS) //1
{
.......
}
lpValueName=“ddd”;
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,(unsigned char *)time,&dwLength)==ERROR_SUCCESS)//2
{
.......
}
}
两次查询的lpValueName不同。 第一次查询能成功,而第二次就出错了,分开测试都是通过,正确的?
请高手指教
问题点数:20、回复次数:7Top
1 楼lixiaosan(小三)回复于 2004-09-01 16:03:13 得分 15
LPBYTE time1 = new BYTE[100];
LPBYTE time2 = new BYTE[100];
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS) //1
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2,&dwLength)==ERROR_SUCCESS) //1
delete[] time1;
delete[] time2;
Top
2 楼zhushizu(从来就没有救世祖)回复于 2004-09-01 17:48:36 得分 0
这个问题对我这个菜鸟级的人来说还是难了一点点,不过还是要帮楼主顶一下...因为菜鸟也想知道答案....关注中!Top
3 楼lengxue129(ying)回复于 2004-09-02 09:36:03 得分 0
谢谢 lixiaosan!!!
还有个问题就是昨天我也是用你的这个方法。只不过我把变量是如下声名的,就出现上述问题。
LPBYTE time1 = new BYTE[100];
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS)
......
}
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
LPBYTE time2 = new BYTE[100];//---------
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2 ,&dwLength)==ERROR_SUCCESS)
......
}这样就不行了。
Top
4 楼lixiaosan(小三)回复于 2004-09-02 10:10:19 得分 0
LPBYTE time1 = new BYTE[100];
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time1 ,&dwLength)==ERROR_SUCCESS)
......
}
RegCloseKey(hKey);
if(RegOpenKeyEx(HKEY_CURRENT_USER,lpSubKey,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
LPBYTE time2 = new BYTE[100];//---------
if(RegQueryValueEx(hKey,lpValueName,NULL,&dwType,time2 ,&dwLength)==ERROR_SUCCESS)
......
}这样就不行了。Top
5 楼crystal521(【云淡风轻】)回复于 2004-09-02 10:57:43 得分 0
upTop
6 楼allenq(黑夜给我黑的眼, 我却用他来翻白眼..........)回复于 2004-09-02 11:02:47 得分 5
第二次查询前,应该对变量重新初始化一下
memset( time,0, sizeof(time));
dwLength = 4096;
因为第一次查询时, 这些值已经产生了变化Top
7 楼lengxue129(ying)回复于 2004-09-03 10:35:27 得分 0
谢谢!!Top




