VC中对注册表进行操作

近来由于需要在自己写的程序中对注册表进行操作。总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享…

为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示:

一、定义

HKEY hKey;
char content[256];      //所查询注册表键值的内容
DWORD dwType=REG_SZ;        //定义读取数据类型
DWORD dwLength=256;
struct HKEY__*RootKey;      //注册表主键名称
TCHAR *SubKey;          //欲打开注册表项的地址
TCHAR *KeyName;         //欲设置项的名字
TCHAR *ValueName;       //欲设置值的名称
LPBYTE SetContent_S;        //字符串类型
int SetContent_D[256];      //DWORD类型
BYTE SetContent_B[256];     //二进制类型   

int ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);
int SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S);
int SetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,int ReSetContent_D[256]);
int SetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256]);
int DeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName);
int DeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);

二、查看函数

ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName)
{
    int i=0;    //操作结果:0==succeed
    if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_READ,&hKey)==ERROR_SUCCESS)
    {
        if(RegQueryValueEx(hKey,ReValueName,NULL,&dwType,(unsigned char *)content,&dwLength)!=ERROR_SUCCESS)
        {
            AfxMessageBox("错误:无法查询有关的注册表信息");
            i=1;
        }
        RegCloseKey(hKey);
    }
    else
    {
        AfxMessageBox("错误:无法打开有关的hKEY");
        i=1;
    }
    return i;
}

三、设置字符串值函数

SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S)
{
    int i=0;    //操作结果:0==succeed
    //int StrLength;
    //StrLength=CString(SetContent_S).GetLength();   

    if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
    {
        if(RegSetValueEx(hKey,ReValueName,NULL,REG_SZ,ReSetContent_S,CString(SetContent_S).GetLength())!=ERROR_SUCCESS)
        {
            AfxMessageBox("错误:无法设置有关的注册表信息");
            i=1;
        }
        RegCloseKey(hKey);
    }
    else
    {
        AfxMessageBox("错误:无法查询有关的注册表信息");
        i=1;
    }
    return i;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索注册表
, int
, struct
afxmessagebox
vc注册表操作、vc注册表操作 通配符、注册表禁止cdpusersvc、vc 注册表、vc 读写注册表,以便于您获取更多的相关知识。

时间: 2024-10-29 03:47:17

VC中对注册表进行操作的相关文章

C#中对注册表的操作

注册表 Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG. 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用

VB.NET中访问注册表

访问|注册表 vb.net中访问注册表变得非常的简单.我们可以用  microsoft.Win32 名称空间的 下的 registry 类 和 registryKey 类. 另外 My.Computer.Registry 也可以返回一个 Microsoft.Win32.Registry 类的实例.下面就举几个小例子来说明vb.net访问注册表的方法. 1,返回或创建一个注册表键    Dim Key1 As Microsoft.Win32.RegistryKey        Key1 = My

电脑中通过注册表将3DSMAX界面语言改成中文的方法

  电脑中通过注册表将3DSMAX界面语言改成中文的方法          1.按win+R打开运行,输入regedit打开注册表编辑器; 2.如果弹出用户帐户控制窗口则点击是; 3.依次展开HKEY_LOCAL_MACHINESOFTWAREAutodesk3dsMax16.0; 4.可以看到LanguageInstalled中有"CHS"和"ENU"项,将两个项的名称调换过来; 5.接着打开3DSMAX软件,就可以用中文显示. 若发现电脑中安装的3DSMAX软件

C++ Builder中注册表的操作

c++|注册表 首先,先介绍一下TRegistry的属性和方法: TRegistry类一共有四个属性. 属性 类型 描述 CurrentKey int 包含当前键值的值,但它的意思不太好懂,所以不太常用 RootKey int 当前键值的根键,BCB定义有枚举常量:HKEY_CURRENT_USER.HKEY_CLASSES_ROOT.HKEY_LOCAL_MACHINE.HKEY_USERS.HKEY_CURRENT_CONFIG.HKEY_DYN_DATA.HKEY_USERS.分别对应注册

如何禁止掉win7电脑中的注册表功能?

  其实使用win7 旗舰版的朋友都知道,咱们解决很多系统中的故障,或者是调出一些功能的时候,都需要进入到注册表编辑器窗口进行操作,但是同时,咱们也不得不意识到,随意的操作注册表中的键值文件,也是存在一定的风险性的,毕竟,注册表是电脑的一个数据库,电脑中所有的数据都是由它在管理,一旦什么地方的操作出现错误,咱们就需要对此付出沉痛的代价.所以下面,小编就来告诉大家,在win7 旗舰版中,咱们如何禁止注册表功能. 1.首先,咱们同时按下键盘上的win+R快捷键打开电脑的运行窗口,然后在窗口中输入代码

asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)

检测Office是否安装以及获取安装 路径 及安装版本  代码如下 复制代码     #region 检测Office是否安装      ///<summary>      /// 检测是否安装office      ///</summary>      ///<param name="office_Version"> 获得并返回安装的office版本</param>      ///<returns></returns

Windows XP中在注册表下查看隐藏用户

在XP中,从控制面板的用户帐户,和计算机管理中的本里用户和组的用户,以及从注册表中的 KEY_LOCAL_MACHINE\SAM\SAM\Domains\account\Users\Names下看到的用户的数量是有区别的.在控制面 版中看到的是最少的,而在计算机管理中的本里用户和组的用户能看到一些隐藏的用户,但是对于部分通 过后门或者木马添加的帐户,在一般情况是是只能通过注册表才能查看到的. 打开注册表:开始->运行->regedit.msc 在注册表的默认情况下,我们是不能看到隐藏用户.以下

ADO.NET中的多数据表读取操作

在开发基于.NET平台的数据库应用程序时,我们一般都会用到DataSet,作为ADO.NET的核心类它为我们提供了强大的功能,而整个看上去就像是放在内存内的一个小型数据库,内部包括了DataTable.DataView.DataRow.DataColumn.Constraint以及DataRelation.当初看到它时真的是有点兴奋. 下面根据我的一些经验来举例说明在ADO.NET中的多表填充.关联表更新以及多个Command对象执行过程中启用事务的操作.欢迎大家交流,或在Blog上留言. 一.

win7中的注册表怎么恢复

  win 7注册表对许多菜鸟用户或者普通用户来说都不敢轻易去动,其实注册表没那么危险的,只要掌握方法就能做到. 1.用win7 系统U盘来修复,结果仍然不行 2.使用注册表修复工具,结果提示找不到相应的dll文件 3.使用系统还原,可是没建立系统还原点 最后,使用系统本身备份的注册表文件替换掉现有的,这样才解决了. 具体的做法是,用win7系统U盘启动,然后进入到修复界面,打开cmd窗口,在命令行中进入到以下目录: C:windowssystem32configRegBack目录,然后使用co