vc访问注册表

来源:互联网 发布:网页源代码 隐藏数据 编辑:程序博客网 时间:2024/05/21 17:16

在Visual C++ 6.0或5.0环境中新建一基于对话框的工程,设置了两个命令按钮,名为“查询用户信息”和“修改用户信息”,用来查询和修改注册表中用户姓名和公司名称。这里须要指出的是,用户的信息位于系统注册表中 //HKEY_LOCAL_MACHINE//Software//Microsoft//Windows//CurrentVersion// 的位置,键值名RegisteredOwner和RegisteredOrganization分别表示用户的姓名和用户公司的名称。

 

//读取注册表

void CRegistryView::OnButton1()
{
 // TODO: Add your control notification handler code here
 HKEY hKEY;
 LPCTSTR path="Software//Microsoft//MS Setup (ACME)//User Info";

 long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path, 0, KEY_READ,&hKEY);

 if(ret!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
 {
  MessageBox("错误: 查询无法打开有关的hKEY!");
  return;
 }

 unsigned char tmp[256]="/0";
 DWORD type=REG_SZ;
 DWORD size=80;
 ret=::RegQueryValueEx(hKEY,"DefName", NULL,&type,tmp,&size);
 if(ret!=ERROR_SUCCESS)
 {
  MessageBox("错误:无法查询有关注册表信息!");
  return;
 }
 CString tmpstring=CString(tmp);
 AfxMessageBox(tmpstring);
 ::RegCloseKey(hKEY);
}

//写入注册表

void CRegistryView::OnButton2()
{
 // TODO: Add your control notification handler code here
 unsigned char tmp[256];
 sprintf((char *)tmp,"%s","hello");
 CString tmpstring=tmp;

 HKEY hKEY;
 DWORD type=REG_SZ;
 DWORD size=tmpstring.GetLength()+1;
 LPCTSTR path="Software//Microsoft//MS Setup (ACME)//User Info" ;

 long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_WRITE, &hKEY);
 if(ret!=ERROR_SUCCESS)
 {
  MessageBox("错误: 修改无法打开有关的hKEY!");
  return;
 }
 ret=::RegSetValueEx(hKEY,"DefName",NULL,type,tmp,size);
 if(ret!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法修改有关注册表信息!");
  return;
 }
 ::RegCloseKey(hKEY);
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sinomac/archive/2007/02/23/1512967.aspx

原创粉丝点击