Chinaunix首页 | 论坛 | 博客
  • 博客访问: 415780
  • 博文数量: 99
  • 博客积分: 4230
  • 博客等级: 上校
  • 技术积分: 1026
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-21 14:52
文章分类

全部博文(99)

文章存档

2011年(1)

2010年(1)

2008年(13)

2007年(28)

2006年(45)

2005年(11)

我的朋友

分类: C/C++

2006-12-11 14:08:48

以下全是代码,有建立目录,删除目录,建立,更改值,删除值
基本包含了所有可能的操作
注册表,其实是windows系统的数据库.开发过项目的人都清楚软件或者网站与数据库的关系
windows系统也是一个项目
 
以下是内容:
 
void CMy1Dlg::OnOK()
{
 // TODO: Add extra validation here
 //::RegCreateKeyEx(
 HKEY hKEY;
 LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\Test\\";
 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
 if(ret0!=ERROR_SUCCESS)
 {
  MessageBox("错误,无法打开有关的hKEY!");
  return;
 }
 LPBYTE owner_Get=new BYTE[80];
 DWORD type_1=REG_SZ;
 DWORD cbData_1=80;
 long ret1=::RegQueryValueEx(hKEY,"name",NULL,&type_1,owner_Get,&cbData_1);
 if(ret1!=ERROR_SUCCESS)
 {
  ::RegCloseKey(hKEY);
  MessageBox("错误,无法查询有关注册表信息");
  return;
 }
 LPBYTE company_Get=new BYTE [80];
 DWORD type_2=REG_SZ; DWORD cbData_2=80; 
 long ret2=::RegQueryValueEx(hKEY, "path", NULL,&type_2,company_Get, &cbData_2);
 if(ret2!=ERROR_SUCCESS)
 {
  ::RegCloseKey(hKEY);
  MessageBox("错误: 无法查询有关注册表信息!");
  return;
 }
 // 将 owner_Get 和 company_Get 转换为 CString 字符串, 以便显示输出。
 CString str_owner=CString(owner_Get);
 CString str_company=CString(company_Get);
 delete[] owner_Get; delete[] company_Get;
 // 程序结束前要关闭已经打开的 hKEY。
 MessageBox(str_owner);
 MessageBox(str_company);
 ::RegCloseKey(hKEY);
 //CDialog::OnOK();
}
void CMy1Dlg::OnOk2()
{
 // TODO: Add your control notification handler code here
 //添加注册表信息
 CString str_owner,str_company;
 str_owner="我是一只大鸟";
 str_company="飞在万米高空";
 HKEY hKEY; 
 LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\Test\\";
    //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。
 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_WRITE, &hKEY));
 if(ret0!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法打开有关的hKEY!");
  return;
 }
    //修改有关数据(用户姓名 owner_Set),要先将CString型转换为LPBYTE。
 LPBYTE owner_Set=CString_To_LPBYTE(str_owner);
 DWORD type_1=REG_SZ;
 DWORD cbData_1=str_owner.GetLength(); 
 //与RegQureyValueEx()类似,hKEY表示已打开的键的句柄,"RegisteredOwner"
 //表示要访问的键值名,owner_Set表示新的键值,type_1和cbData_1表示新值。
 //的数据类型和数据长度
 long ret1=::RegSetValueEx(hKEY, "name", NULL, type_1, owner_Set, cbData_1);
 if(ret1!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法修改有关注册表信息!");
  return;
 }
 LPBYTE company_Set=CString_To_LPBYTE(str_company);
 DWORD type_2=REG_SZ; 
 DWORD cbData_2=str_company.GetLength(); 
 long ret2=::RegSetValueEx(hKEY, "path", NULL, type_2, company_Set, cbData_2);
 if(ret2!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法修改有关注册表信息!");
  return;
 }
 ::RegCloseKey(hKEY);
}
void CMy1Dlg::OnOk3()
{
 // TODO: Add your control notification handler code here
 //删除注册表信息
 HKEY hKEY; 
 LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\Test\\";
    //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。
 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_WRITE, &hKEY));
 if(ret0!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法打开有关的hKEY!");
  return;
 }
 //long ret1=::RegDeleteKey(hKEY,"name");
 long ret1=::RegDeleteValue(hKEY,"name");
 if(ret1!=ERROR_SUCCESS)
 {
  MessageBox("删除失败1");
  return;
 }
 long ret2=::RegDeleteValue(hKEY,"path");
 if(ret2!=ERROR_SUCCESS)
 {
  MessageBox("删除失败2");
  return;
 }
 ::RegCloseKey(hKEY);
}
void CMy1Dlg::OnOk4()
{
 // TODO: Add your control notification handler code here
 CDialog::OnOK();
}
LPBYTE CMy1Dlg::CString_To_LPBYTE(CString str)
{
 LPBYTE lpb=new BYTE[str.GetLength()+1]; 
 int iLength=str.GetLength();
    for(int i=0;i  lpb[i]=str[i];
    lpb[iLength+1]=0;
    return lpb;
}
void CMy1Dlg::OnOk5()
{
 // TODO: Add your control notification handler code here
 //建立目录
 HKEY hKEY;
 LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\Test\\";
 ::RegCreateKey(HKEY_LOCAL_MACHINE,data_Set,&hKEY);
 ::RegCloseKey(hKEY);
}
void CMy1Dlg::OnOk6()
{
 // TODO: Add your control notification handler code here
 //删除目录
 HKEY hKEY; 
 LPCTSTR data_Set="Software\\Microsoft\\Windows\\CurrentVersion\\";
    //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。
 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_WRITE, &hKEY));
 if(ret0!=ERROR_SUCCESS)
 {
  MessageBox("错误: 无法打开有关的hKEY!");
  return;
 }
 //long ret1=::RegDeleteKey(hKEY,"name");
 long ret1=::RegDeleteKey(hKEY,"Test");
 if(ret1!=ERROR_SUCCESS)
 {
  MessageBox("删除失败1");
  return;
 }
 ::RegCloseKey(hKEY);
}
阅读(1007) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~