zoukankan      html  css  js  c++  java
  • vc读写注册表

    注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息。注册表中的值通过其名称标识。值名称由与键名相同的字符组成。值本身可以是字符串、二进制数据或者是32位无符号值。在这里我们主要运用以下技巧:

    (一)、预定义的注册表键。注册表包含了几个预定义键:

    HKEY_LOCAL_MACHINE 包含描述计算机及其配置的条目。其中包括关于处理器、系统主板、内存和已安装的软件和硬件的信息。  
    HKEY_CLASSES_ROOT 是与文档类型和 OLECOM 相关的信息的支持键。这个键是 HKEY_LOCAL_MACHINE的从属键。  
    HKEY_USERS 用作默认用户首选设置,也作为单个用户的首选设置。  
    HKEY_CLASSES_USER 是用于当前(登录)用户的相关信息。  
    HKEY_CURRENT_CONFIG 包含了当前系统配置的信息。  
    还有一个,一般不会出现,只有配置的局域网后才会有。  
    (二)、CRegKey 类及主要使用和函数说明
    所需要头文件:atlbase.h  
    常用函数 ☆ 打开一个键的函数:RegOpenKeyEx
        函数定义:LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
                                    LPCTSTR lpSubKey,//要打开的子键名字的地址
                                    DWORD ulOptions,//保留值,必须为0
                                    REGSAM samDesired,//打开方式,如读还是写
                                    PHKEY phkResult//返回的打开的子键的句柄
                                   );

    ☆ 查询某一个键值:RegQueryValueEx
        函数定义:LONG RegQueryValueEx(HKEY hKey,//要查询的键的句柄
                                       LPCTSTR lpValueName,//要查询的键值的名称
                                       LPDWORD lpReserved,//保留值
                                       LPDWORD lpType,//要查询的数据的类型
                                       LPBYTE lpData,//要返回的查询的数据
                                       LPDWORD lpcbData//预置的数据的长度
                                      );

    ☆ 设置一个键值RegSetValueEx
        函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
                                     LPCTSTR lpValueName,//要访问的键值的名称
                                     LPDWORD lpReserved,//保留值
                                     DWORD dwType,//要设置的数据的类型
                                     const BYTE *lpData,//要设置的健值
                                     DWORD cbData//数据的长度
                                    );


    二、实例:
    通过AppWizard创建基于对话框的程序 Regedit  
    设 置两个命令按钮,名为“查询”(ID_QUERY)和“修改”(ID_CHANGE),用来查询和修改注册表中用户姓名和公司名称。 注:信息位置9x系列:HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrntVersion NT系列:HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrntVersion 键值:RegisteredOwnertkg和RegisteredOrganization分别表示用户名和公司名  
    设置两个编辑框,用于显示和修改信息。定义两个CString变量m_strOwner,m_Company。  
    “查询”按钮代码如下:void CRegeditDlg::OnQuery()
    {
             UpdateData(true);
    HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭

    //打开与路径 data_Set相关的hKEY
    LPCTSTR data_Set="Software\Microsoft\Windows NT\CurrentVersion\";
    //访问注册表,hKEY则保存此函数所打开的键的句柄
    long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
    if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
    {
    AfxMessageBox("错误:无法打开有关的hKEY");
    return;
    }

    //查询有关的数据
    LPBYTE owner_Get=new BYTE[80];//定义用户姓名 owner_Get
    DWORD type_1=REG_SZ;//定义数据类型
    DWORD cbData_1=80;//定义数据长度

    long ret1=::RegQueryValueEx(hKEY,"RegisteredOwner",NULL,&type_1,owner_Get,&cbData_1);
    if(ret1!=ERROR_SUCCESS)
    {
    AfxMessageBox("错误:无法查询有关的注册表信息");
    return;
    }

    //查询公司名
    LPBYTE company_Get=new BYTE[80];//定义公司名称 company_Get
    DWORD type_2=REG_SZ;//定义数据类型
    DWORD cbData_2=80;//定义数据长度

    long ret2=::RegQueryValueEx(hKEY,"RegisteredOrganization",NULL,&type_2,company_Get,&cb );

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5620998.html
Copyright © 2011-2022 走看看