3821|8

68

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

wince下读写注册表的问题?? [复制链接]

我想做一个读写注册表的程序,可是现在遇到的问题是用的RegQueryValueEx函数老是不对,一直不能返回error_sucess,往里写的数据用注册表读写工具看也是乱码?往达人指点

最新回复

void BL_ReadRegistry(BLStruct *pBLInfo) {     HKEY    hKey;     LONG    lResult;     DWORD   dwType;     DWORD   dwVal;     DWORD   dwLen;     lResult = RegOpenKeyEx(HKEY_CURRENT_USER, szregRootKey, 0, KEY_ALL_ACCESS, &hKey);     if(ERROR_SUCCESS == lResult) {         dwType = REG_DWORD;         dwLen = sizeof(DWORD);         lResult = RegQueryValueEx(hKey, szregBatteryTimeout, NULL, &dwType,                                   (LPBYTE)&dwVal, &dwLen);         if(ERROR_SUCCESS == lResult) {             pBLInfo->m_dwBatteryTimeout = dwVal;         }         lResult = RegQueryValueEx(hKey, szregACTimeout, NULL, &dwType, (LPBYTE)&dwVal,                                   &dwLen);         if(ERROR_SUCCESS == lResult) {             pBLInfo->m_dwACTimeout = dwVal;         }         lResult = RegQueryValueEx(hKey, szregBatteryAuto, NULL, &dwType, (LPBYTE)&dwVal,                                   &dwLen);         if(ERROR_SUCCESS == lResult) {             pBLInfo->m_bBatteryAuto = (BOOL) dwVal;         }         lResult = RegQueryValueEx(hKey, szregACAuto, NULL, &dwType, (LPBYTE)&dwVal,                                   &dwLen);         if(ERROR_SUCCESS == lResult) {             pBLInfo->m_bACAuto = (BOOL) dwVal;         }         RegCloseKey(hKey);     }     else {         RETAILMSG(1, (TEXT("BAK : HKEY_CURRENT_USER\\%s key doesn't exist!\r\n"), szregRootKey));     } }   详情 回复 发表于 2009-10-20 11:06
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
帖代码出来看看

可以肯定是LZ你的用法有问题,一般情况下不要怀疑系统API!

注意,字符串的编码方式必须是Unicode,不能是ANSI。
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
恩,现在家里的电脑,什么软件都没装呢
明天贴上代码,谢谢楼上的回复
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
可能是API的某些传入参数有问题吧
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
我自己对了几遍没啥问题,主要是刚接触这方面的编程,可能很多东西没注意到
下面是代码:各位帮忙看以下:
BOOL CRegtestDlg::ReadReg()
{
        HKEY hkey;
       
        TCHAR pdata1[255];
        TCHAR *pdata = pdata1;
        DWORD ValType;
        unsigned long status;
        unsigned long ValLen;
        char lianhe[10];                                 
        status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\TOUCH\\"),
                0, 0, &hkey);
        RETAILMSG(1,(TEXT("hkey = %s  RegopenValueEx false\r\n",hkey)));
        if(status != ERROR_SUCCESS)
        {
                RETAILMSG(1,(TEXT("RegopenValueEx false\r\n")));
                return FALSE;
        }
        //status = RegQueryValueEx(hkey, _T("CalibrationData"), 0, &ValType,(LPBYTE)pdata, &ValLen);
        status = RegQueryValueEx(hkey, _T("testdata"), NULL, &ValType,(LPBYTE)pdata, &ValLen);
        if(status != ERROR_SUCCESS)
        {
                RETAILMSG(1,(TEXT("%d  RegQueryValueEx false\r\n",status)));

                return FALSE;
        }
       
        RegCloseKey(hkey);
        return TRUE;
}
现在的问题是RegQueryValueEx的返回值不是ERROR_SUCCESS
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
lz用GetLastError()看看返回的error code值是多少,然后对照着看看看你是什么原因吧
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
传入的参数不对
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
哪个参数不对啊,我自己查了好几遍没找到问题啊
呵呵,还请楼上明示
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
void BL_ReadRegistry(BLStruct *pBLInfo)
{
    HKEY    hKey;
    LONG    lResult;
    DWORD   dwType;
    DWORD   dwVal;
    DWORD   dwLen;

    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, szregRootKey, 0, KEY_ALL_ACCESS, &hKey);
    if(ERROR_SUCCESS == lResult) {
        dwType = REG_DWORD;
        dwLen = sizeof(DWORD);

        lResult = RegQueryValueEx(hKey, szregBatteryTimeout, NULL, &dwType,
                                  (LPBYTE)&dwVal, &dwLen);
        if(ERROR_SUCCESS == lResult) {
            pBLInfo->m_dwBatteryTimeout = dwVal;
        }

        lResult = RegQueryValueEx(hKey, szregACTimeout, NULL, &dwType, (LPBYTE)&dwVal,
                                  &dwLen);
        if(ERROR_SUCCESS == lResult) {
            pBLInfo->m_dwACTimeout = dwVal;
        }

        lResult = RegQueryValueEx(hKey, szregBatteryAuto, NULL, &dwType, (LPBYTE)&dwVal,
                                  &dwLen);
        if(ERROR_SUCCESS == lResult) {
            pBLInfo->m_bBatteryAuto = (BOOL) dwVal;
        }

        lResult = RegQueryValueEx(hKey, szregACAuto, NULL, &dwType, (LPBYTE)&dwVal,
                                  &dwLen);
        if(ERROR_SUCCESS == lResult) {
            pBLInfo->m_bACAuto = (BOOL) dwVal;
        }

        RegCloseKey(hKey);
    }
    else {
        RETAILMSG(1, (TEXT("BAK : HKEY_CURRENT_USER\\%s key doesn't exist!\r\n"), szregRootKey));
    }
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表