16,472
社区成员
发帖
与我相关
我的任务
分享
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);//此处有问题
// 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);
}