各位高手帮我看一下:
         long ret;
HKEY key;
CHAR str[256];
ret=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"\\SYSTEM\\Select",0,KEY_ALL_ACCESS,&key);
if(ret!=ERROR_SUCCESS)
{
DWORD dwsize=256;
MessageBox("can open");//提示对话框1
::RegQueryValueEx(key,"Current",NULL,NULL,(unsigned char *)str,&dwsize);
CString str1;
str1=str;
MessageBox(str1);//显示注册表项值
::RegCloseKey(key);
}
提示对话框1可以出来说明可以打开注册表,但是显示注册表项值的对话框却显示一对乱码,请各位高手指点

解决方案 »

  1.   

    不好意思:上面代码中if(ret!=ERROR_SUCCESS)应该为if(ret==ERROR_SUCCESS),当然运行结果就是提示对话框1也没有出来,也就是说不能打开注册表,请各位高手指点
      

  2.   

    确定有“HKEY_LOCAL_MACHINE\SYSTEM\Select”这个键吗?
      

  3.   

    我试的时候,没有一点问题。第一个对话框出来后,点一下确定,第二个对话框就出来。建议你重做一个简单对话框,在确定按钮下键入下列函数,试试。
    void CXxxccDlg::OnOK() 
    {
        long ret;
    HKEY key;
    char str[256];
    ret=::RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Internet Explorer\\Main\\",0,KEY_ALL_ACCESS,&key);
    if(ret==ERROR_SUCCESS)
    {
    DWORD dwsize=256;
    AfxMessageBox("can open");//提示对话框1
    ::RegQueryValueEx(key,"Default_Page_URL",NULL,NULL,(unsigned char *)str,&dwsize);
             AfxmessageBox(str);//可增加一个提示框
    CString str1;
    str1=str;
    AfxMessageBox(str1);//显示注册表项值
    ::RegCloseKey(key);
    }

    // CDialog::OnOK();
    }
      

  4.   

    谢谢,打开了,不过你例子中要取的值是REG_SZ类型的,如果我想取REG_DWORD类型的如何取呢?我试了试还按这种取法,取出来是空的
      

  5.   

    用上面的方法提取REG_DWORD型数据肯定是错的, 不能生搬硬套,需要变通.将第四个参数NULL,即REG_SZ变为REG_DWORD试试.
    ::RegQueryValueEx(key,"...",NULL,REG_DWORD,(unsigned char *)str,&dwsize);
      

  6.   

    要提示对话框显示DWORD值,需要你将其转化为字符串。