RegSetValueEx 失败 是怎么回事呢?

swlilike 2010-08-21 05:48:31
void CRegeditDlg::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;
}

//设置有关的数据
//CString_To_LPBYTE,请参考下面的函数
LPBYTE owner_Set=CString_To_LPBYTE(m_strOwner);//定义用户姓名 owner_Set
DWORD type_1=REG_SZ;//定义数据类型
DWORD cbData_1=m_strOwner.GetLength()+1;//定义数据长度

long ret1=::RegSetValueEx(hKEY,"RegisteredOwner",NULL,type_1,owner_Set,cbData_1);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法设置有关的注册表信息");
return;
}

//查询公司名
LPBYTE company_Set=CString_To_LPBYTE(m_strCompany);//定义公司名称 company_Set
DWORD type_2=REG_SZ;//定义数据类型
DWORD cbData_2=m_strCompany.GetLength()+1;//定义数据长度

long ret2=::RegSetValueEx(hKEY,"RegisteredOrganization",NULL,type_2,company_Set,cbData_2);
if(ret2!=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法设置有关的注册表信息");
return;
}
else
{
AfxMessageBox("注册表修改完成");
}
//程序结束,关闭打开的hKEY
::RegCloseKey(hKEY);
UpdateData(false);
}




一个例子我在百度上找的 可是 第一个RegSetValueEx 就返回失败,为啥
...全文
593 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dvlinker 2010-08-21
  • 打赏
  • 举报
回复

void InitParamSetting::ReadLayOutInfo()
{
moxu::TString readPath;
User &user = VStarApp::Instance().GetUser();
readPath = _T("Software\\PSS\\VideoLayOut\\");
readPath += user.UserInfo.Username;

HKEY hkey;
DWORD dwDisposition;
long ret0=(::RegCreateKeyEx
(HKEY_CURRENT_USER,readPath.c_str(),0,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,&dwDisposition));
if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
{
AfxMessageBox(_T("错误: 无法打开或创建指定的键或子键!"));
return;
}
if(dwDisposition==REG_OPENED_EXISTING_KEY)
{
//int 全屏
DWORD reg_type;
DWORD data_size;
int ret = RegQueryValueEx(hkey,_T("分屏数"),0,®_type,(BYTE *)&_splitnum, &data_size);
if(ret != ERROR_SUCCESS)
{
AfxMessageBox(_T("错误:不能读取分屏数信息!"));
return;
}
ret = RegQueryValueEx(hkey,_T("居中显示"),0,®_type,(BYTE *)&_bCenter, &data_size);
if(ret != ERROR_SUCCESS)
{
AfxMessageBox(_T("错误:不能读取视频显示方式信息!"));
return;
}
ret = RegQueryValueEx(hkey,_T("轮询方式"),0,®_type,(BYTE *)&_pollway, &data_size);
if(ret != ERROR_SUCCESS)
{
AfxMessageBox(_T("错误:不能读取视频轮询方式信息!"));
return;
}
ret = RegQueryValueEx(hkey,_T("视频数"),0,®_type,(BYTE *)&_videonum, &data_size);
if(ret != ERROR_SUCCESS)
{
AfxMessageBox(_T("错误:不能读取视频数信息!"));
return;
}

::RegCloseKey(hkey);
}
给LZ一段代码参考一下,我们的代码中这样用是没问题的~
swlilike 2010-08-21
  • 打赏
  • 举报
回复
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ|KEY_WRITE,&hKEY));


16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧