首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

回复 有关于RegSetValueEx的

2012-09-09 
在线等回复 有关于RegSetValueEx的先上一段代码C/C++ codevoid CAppWDlg::OnModify() {UpdateData(true)H

在线等回复 有关于RegSetValueEx的
先上一段代码

C/C++ code
void CAppWDlg::OnModify() {    UpdateData(true);    HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭        //打开与路径 data_Set相关的hKEY    LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\";        //访问注册表,hKEY则保存此函数所打开的键的句柄    long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));    if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行    {        AfxMessageBox("错误:无法打开有关的hKEY");        return;    }        //设置有关的数据       LPBYTE lpb=new BYTE[m_strOwner.GetLength()+1];//一个汉字的长度是2 俩字节    for(int i=0;i<m_strOwner.GetLength();i++)    {        lpb[i]=m_strOwner[i];    }    lpb[m_strOwner.GetLength()]=0;//    int pp=m_strOwner.GetLength(); PP=6    LPBYTE owner_Set=lpb;//定义用户姓名 owner_Set    DWORD type_1=REG_SZ;//定义数据类型        DWORD cbData_1=m_strOwner.GetLength()+1;//定义数据长度    long ret_own=::RegSetValueEx(hKEY,"RegisteredOwner",NULL,type_1,owner_Set,cbData_1);//[color=#FF0000]此处有问题[/color]//    long ret1=::RegSetValue(hKEY,"RegisteredOwner",type_1,m_strOwner,cbData_1);    if(ret_own!=ERROR_SUCCESS)    {        AfxMessageBox("错误:无法设置有关的注册表信息01");        return;    }         LPBYTE lpb2=new BYTE[m_Company.GetLength()+1];    for(int j=0;j<m_Company.GetLength();j++)    {        lpb2[j]=m_Company[j];    }    lpb2[m_Company.GetLength()]=0;    //查询公司名    LPBYTE company_Set=lpb2;//定义公司名称 company_Set    DWORD type_2=REG_SZ;//定义数据类型    DWORD cbData_2=m_Company.GetLength()+1;//定义数据长度    long ret2=::RegSetValueEx(hKEY,"RegisteredOrganization",NULL,type_2,(LPBYTE)company_Set,cbData_2);    //long ret2=::RegSetValue(hKEY,"RegisteredOrganization",type_2,m_Company,cbData_2);    if(ret2!=ERROR_SUCCESS)    {        AfxMessageBox("错误:无法设置有关的注册表信息");        return;    }    else    {        AfxMessageBox("注册表修改完成");    }    //程序结束,关闭打开的hKEY    ::RegCloseKey(hKEY);    UpdateData(false);}

上数代码在执行到第一个RegSetValueEx()函数时就终止了 debugger的时候显示返回值是5 我新手一枚 希望各位大神给一个详细的解决方法 有代码最好
代码想实现的功能就是修改注册表中RegisteredOwner和RegisteredOrganization的键值 但是一直修改不了 希望各位不吝赐教

[解决办法]
5 --- Access Deny, 你访问的注册表是否有权限
[解决办法]
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
这行,你以read的方式打开,然后想修改数值,这样应该不可以吧
[解决办法]
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ|KEY_WRITE,&hKEY));
[解决办法]
应该找到问题原因了,恭喜楼主

热点排行