⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_在vc++中访问和修改系统注册表.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      <SCRIPT src="CSDN_文档中心_在VC++中访问和修改系统注册表.files/microsoft.js"></SCRIPT>
    </TD>
    <TD align=middle width=620>
      <TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
        <TBODY>
        <TR bgColor=#ffffff>
          <TD align=middle height=10 width=50></TD>
          <TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A 
            href="http://www.csdn.net/develop/">文档中心</A> - <FONT 
            color=#003399>Visual C++</FONT>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>标题</FONT></TD>
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;在VC++中访问和修改系统注册表</B>&nbsp;&nbsp;&nbsp;&nbsp;jadedrip(转贴) 
          </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;在VC++中访问和修改系统注册表</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>出处</FONT></TD>
          <TD height=10>&nbsp;&nbsp;&nbsp;&nbsp;<A 
            href="http://www.cpcw.com/">http://www.cpcw.com/</A></TD></TR>
        <TR>
          <TD align=middle height=10></TD>
          <TD height=10></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>(广东 粟利民 孙强) 
            <BR><BR>  Windows95/98的注册表包含了Windows95/98的系统配置、PC机的硬件配置、Win32应用程序和用户的其他设置信息。注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目。<BR><BR>  在实际的编程工作中,我们遇到了如何在Visual 
            C++中对Windows95/98注册表整个树状结构信息进行访问和修改的问题,如查询和修改注册表中用户姓名和公司名称的有关信息。通过编程实践,我们实现了在Visual 
            C++中查询和修改系统注册表的有关信息。下面以一个实例说明具体的编程方法。<BR><BR>  在Visual C++ 
            6.0或5.0环境中新建一基于对话框的工程,设置了两个命令按钮,名为“查询用户信息”和“修改用户信息”,用来查询和修改注册表中用户姓名和公司名称。这里须要指出的是,用户的信息位于系统注册表中 
            \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ 
            的位置,键值名RegisteredOwner和RegisteredOrganization分别表示用户的姓名和用户公司的名称。<BR><BR>  1.查询用户信息的代码<BR>  HKEY 
            hKEY; //定义有关的 hKEY, 在查询结束时要关闭。<BR>  LPCTSTR 
            data_Set=″Software\\Microsoft\\Windows\\CurrentVersion\\″;<BR>  //打开与路径 
            data_Set 相关的 
            hKEY,第一个参数为根键名称,第二个参数表。<BR>  //表示要访问的键的位置,第三个参数必须为0,KEY_READ表示以查询的方式。<BR>  //访问注册表,hKEY则保存此函数所打开的键的句柄。<BR>  long 
            ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_READ, 
            &hKEY));<BR>  if(ret0!=ERROR_SUCCESS) 
            //如果无法打开hKEY,则终止程序的执行<BR>  {MessageBox(″错误: 
            无法打开有关的hKEY!″);<BR>  return;}<BR>  //查询有关的数据 (用户姓名 
            owner_Get)。<BR>  LPBYTE owner_Get=new BYTE[80];<BR>  DWORD 
            type_1=REG_SZ ; DWORD cbData_1=80; 
            <BR>  //hKEY为刚才RegOpenKeyEx()函数所打开的键的句柄,″RegisteredOwner″。<BR>  //表示要查 
            询的键值名,type_1表示查询数据的类型,owner_Get保存所。<BR>  //查询的数据,cbData_1表示预设置的数据长度。<BR>long 
            ret1=::RegQueryValueEx(hKEY, ″RegisteredOwner″, NULL,<BR>  &type_1, 
            owner_Get, 
            &cbData_1);<BR>  if(ret1!=ERROR_SUCCESS)<BR>  {<BR>  MessageBox(″错误: 
            无法查询有关注册表信息!″);<BR>  return;<BR>  }<BR>  // 查询有关的数据 (公司名 
            company_Get)<BR>  LPBYTE company_Get=new BYTE [80];<BR>  DWORD 
            type_2=REG_SZ; DWORD cbData_2=80; <BR>  long 
            ret2=::RegQueryValueEx(hKEY, ″RegisteredOrganization″, 
            NULL,&type_2,company_Get, 
            &cbData_2);<BR>  if(ret2!=ERROR_SUCCESS)<BR>  {<BR>  MessageBox(″错误: 
            无法查询有关注册表信息!″);<BR>  return;<BR>   }<BR>  // 将 owner_Get 和 
            company_Get 转换为 CString 字符串, 以便显示输出。<BR>  CString 
            str_owner=CString(owner_Get);<BR>  CString 
            str_company=CString(company_Get);<BR>  delete[] owner_Get; delete[] 
            company_Get;<BR>  // 程序结束前要关闭已经打开的 
            hKEY。<BR>  ::RegCloseKey(hKEY);<BR>  ……<BR>  这样,上述程序执行完毕,字符串str_owner和str_company则表示查询到的用户的姓名和公司的名称,在VC++中便可用对话框的方式将其显示出来。<BR><BR>  2. 
            修改用户信息的代码(注意和上述的查询代码属于不同的函数体)<BR>  在程序中我们先显示一个对话框,要求用户输入新的用户姓名和公司名称并按确认键,将取得CString类型的有关字符串。要先将其转换为LPBYTE(即unsigned 
            char*)型的数据类型,以便后面的函数调用。下面是程序中用到的将CString型转换为LPBYTE的转换函数:<BR>  LPBYTE 
            CString_To_LPBYTE(CString str)<BR>  {<BR>  LPBYTE lpb=new 
            BYTE[str.GetLength()+1]; <BR>  &lt;str.GetLength(); 
            i++)lpb[i]=str[i];&gt;<BR>  for(int i=0; ibr&gt; 
              lpb[str.GetLength()]=0;<BR>  return 
            lpb;<BR>  }<BR>  以下则是具体的修改注册表用户信息的代码:<BR>  CString str_owner, 
            str_company;<BR>  …… 
            //通过对话框输入新的用户信息,保存到str_owner和str_company<BR>  //定义有关的 hKEY, 
            在程序的最后要关闭。<BR>HKEY hKEY; <BR>  LPCTSTR 
            data_Set=″Software\\Microsoft\\Windows\\CurrentVersion″;<BR>  //打开与路径 
            data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。<BR>  long 
            ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, <BR>  data_Set, 0, 
            KEY_WRITE, 
            &hKEY));<BR>  if(ret0!=ERROR_SUCCESS)<BR>  {<BR>  MessageBox(″错误: 
            无法打开有关的hKEY!″);<BR>  return;<BR>  }<BR>  //修改有关数据(用户姓名 
            owner_Set),要先将CString型转换为LPBYTE。<BR>  LPBYTE 
            owner_Set=CString_To_LPBYTE(str_owner);<BR>  DWORD 
            type_1=REG_SZ;<BR>  DWORD cbData_1=str_owner.GetLength()+1; 
            <BR>  //与RegQureyValueEx()类似,hKEY表示已打开的键的句柄,″RegisteredOwner″<BR>  //表示要访问的键值名,owner_Set表示新的键值,type_1和cbData_1表示新值。<BR>  //的数据类型和数据长度<BR>  long 
            ret1=::RegSetValueEx(hKEY, ″RegisteredOwner″, NULL,<BR>  type_1, 
            owner_Set, 
            cbData_1);<BR>  if(ret1!=ERROR_SUCCESS)<BR>  {<BR>  MessageBox(″错误: 
            无法修改有关注册表信息!″);<BR>  return;<BR>  }<BR>  //修改有关的数据 (公司名 
            company_Set)<BR>  LPBYTE 
            company_Set=CString_To_LPBYTE(str_company);<BR>  DWORD 
            type_2=REG_SZ; <BR>  DWORD cbData_2=str_company.GetLength()+1; 
            <BR>  long ret2=::RegSetValueEx(hKEY, ″RegisteredOrganization″, 
            NULL,<BR>  type_2, company_Set, 
            cbData_2);<BR>  if(ret2!=ERROR_SUCCESS)<BR>  {<BR>  MessageBox(″错误: 
            无法修改有关注册表信息!″);<BR>  return;<BR>   
            }<BR><BR>  执行上面的修改注册表的操作后,可打开注册表查看具体的数值,可以看到已经成功地修改了有关的数据了。<BR><BR>  以上实例讲述了如何在VC++中访问Windows98/95的系统注册表,我们可以很方便地查询及修改注册表的任何位置的有关信息。以上的程序在Visual 
            C++ 6.0中调试通过(Visual C++ 
        5.0与之类似),且运行结果正确。<BR><BR>摘自《电脑报》<BR><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_在VC++中访问和修改系统注册表.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_在VC++中访问和修改系统注册表.files/ico_pencil.gif" width=16> 
      </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; xhjxhjjj <I>(2000-11-13 14:34:08)</I> 
  </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>我不知道修改注册表的意义。我认为应该写明。 
      总的说来是一篇比较好的文章!! <BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=1246">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 src="CSDN_文档中心_在VC++中访问和修改系统注册表.files/biaoshi.gif" 
      width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -