首先实现CSting转为LPBYTE的函数,这个在修改的时候需要用到 LPBYTE CString_To_LPBYTE(CString str) { LPBYTE lpb=new BYTE[str.GetLength()+1]; for(int i=0; i< str.GetLength();i++) lpb[i]=str[i]; lpb[str.GetLength()]=0; return lpb; } 接下里是获取IE的首页地址的函数内容 HKEY hKEY; //定义有关的 hKEY, 在查询结束时要关闭。 LPCTSTR data_Set="Software//Microsoft//Internet Explorer//Main//"; //打开与路径 data_Set 相关的 hKEY,第一个参数为根键名称,第二个参数表。 //表示要访问的键的位置,第三个参数必须为0,KEY_READ表示以查询的方式。 //访问注册表,hKEY则保存此函数所打开的键的句柄。 long ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER,data_Set, 0, KEY_READ, &hKEY)); if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行 { MessageBox("错误: 无法打开有关的hKEY!"); return; } //查询有关的数据 (IE首页地址 owner_Get)。 LPBYTE owner_Get=new BYTE[80]; DWORD type_1=REG_SZ ; DWORD cbData_1=80; //hKEY为刚才RegOpenKeyEx()函数所打开的键的句柄,″RegisteredOwner″。 //表示要查 询的键值名,type_1表示查询数据的类型,owner_Get保存所。 //查询的数据,cbData_1表示预设置的数据长度。 long ret1=::RegQueryValueEx(hKEY, "Start Page", NULL, &type_1, owner_Get, &cbData_1); if(ret1!=ERROR_SUCCESS) { MessageBox("错误: 无法查询有关注册表信息!1"); return; } //str_owner为IE的首页地址 CString str_owner=CString(owner_Get); delete[] owner_Get; ::RegCloseKey(hKEY); AfxMessageBox(str_owner); 下面是修改IE首页地址的函数内容: CString str_owner="www.baidu.com"; //定义有关的 hKEY, 在程序的最后要关闭。 HKEY hKEY; LPCTSTR data_Set="Software//Microsoft//Internet Explorer//Main//"; //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。 long ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, 0, KEY_WRITE,&hKEY)); if(ret0!=ERROR_SUCCESS) { MessageBox("错误: 无法打开有关的hKEY!"); return; } //修改有关数据(IE首页地址 owner_Set),要先将CString型转换为LPBYTE。 LPBYTE owner_Set=CString_To_LPBYTE(str_owner); DWORD type_1=REG_SZ; DWORD cbData_1=str_owner.GetLength()+1; //与RegQureyValueEx()类似,hKEY表示已打开的键的句柄,″RegisteredOwner″ //表示要访问的键值名,owner_Set表示新的键值,type_1和cbData_1表示新值。 //的数据类型和数据长度 long ret1=::RegSetValueEx(hKEY, "Start Page", NULL, type_1, owner_Set, cbData_1); if(ret1!=ERROR_SUCCESS) { MessageBox("错误: 无法修改有关注册表信息!"); return; } 完毕,(*^__^*) 嘻嘻 如果有更好的方法,请指教,谢谢!
发布评论