以下全是代码,有建立目录,删除目录,建立,更改值,删除值
基本包含了所有可能的操作
注册表,其实是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);
}
阅读(1024) | 评论(0) | 转发(0) |