VC++ 中对注册表的操作

哒爺123

哒爺123

2016-02-19 20:11

今天图老师小编给大家介绍下VC++ 中对注册表的操作,平时喜欢VC++ 中对注册表的操作的朋友赶紧收藏起来吧!记得点赞哦~

VC++ 中对注册表的操作

作者:lixiaosan
日期:04/29/2006

这里只是对注册表的几个api函数的使用简介。在MFC中,你可以使用CRegKey类操作注册表,关于CRegKey类在这里就不做介绍了,可以参考msdn。

以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

 HKEY hKEY;
 HKEY hKEYResult;
 LPCTSTR lpszSubKey;
 LPCTSTR lpszValueName;
 LONG ret;
 DWORD dwType;
 DWORD dwSize;
 
 hKEY = HKEY_LOCAL_MACHINE;
 lpszSubKey = _T("SOFTWAREMyProgram");

 ret = RegOpenKeyEx(
               hKEY,                                      // 根键
               lpszSubKey,                           // 子键
               0,                                             // 必须为0
               KEY_ALL_ACCESS,            // 访问权限
               &hKEYResult);                     // 保存打开的键的句柄
           
 if (ret != ERROR_SUCCESS)       // 若打开失败,则进行创建
 {
     ret = RegCreateKeyEx(
                   hKEY,                                                   // 根键
                   lpszSubKey,                                       // 子键
                   0,                                                          // 必须为0
                   NULL,                                                  // 键的class
                   REG_OPTION_NON_VOLATILE,  // 永久保持
                   KEY_READ|KEY_WRITE,               // 访问权限
                   NULL,                                                 // 安全属性
                   &hKEYResult,                                   // 保存打开的键的句柄
                   NULL);
    if (ret != ERROR_SUCCESS)
    {
        MessageBox(_T("Create failed!"));
        RegCloseKey(hKEYResult);        // 使用完记得关闭句柄
        return;
      }
      else
      {
          lpszValueName = _T("Number");
          DWORD dwNumber = 10; 
          ret = RegSetValueEx(
                        hKEYResult,                                // 打开的句柄
                        lpszValueName,                         // 键名
                        0,                                                   // 必须为0
                        REG_DWORD,                           // 键类型
                        (CONST BYTE*)&dwNumber, // 需存储的数据
                        sizeof(DWORD));                       // 数据长度

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

          lpszValueName = _T("Date");
          LPCTSTR lpszDate = _T("2006/4/29");
          ret = RegSetValueEx(
                        hKEYResult,
                        lpszValueName,
                        0,
                        REG_SZ,
                        (CONST BYTE*)lpszDate,
                        MAX_PATH);
                        RegCloseKey(hKEYResult);
      }
  }
  else // 如打开成功,则进行查询
  {
      lpszValueName = _T("Number");
      dwType = REG_DWORD;
      DWORD dwRes = 0;
      dwSize = sizeof(DWORD);
      ret = RegQueryValueEx(
                    hKEYResult,               // 打开的句柄
                    lpszValueName,        // 查找的键名
                    0,                                  // 必须为0
                    &dwType,                    // 键类型
                    (BYTE*)&dwRes,      // 返回的数据
                    &dwSize);                   // 数据长度
      if (ret != ERROR_SUCCESS)
      {
          MessageBox(_T("Create failed!"));
          RegCloseKey(hKEYResult);
          return;
      }
     
      lpszValueName = _T("Date");
      dwType = REG_SZ;
      dwSize = MAX_PATH;
      BYTE *pByteSubKey = new BYTE[MAX_PATH];
      ZeroMemory(pByteSubKey, MAX_PATH);
      ret = RegQueryValueEx(
                    hKEYResult,
                    lpszValueName,
                    0,
                    &dwType,
                    pByteSubKey,
                    &dwSize);
      RegCloseKey(hKEYResult);
      delete []pByteSubKey;
      pByteSubKey = NULL;
      if (ret != ERROR_SUCCESS)
      {
          MessageBox(_T("Create failed!"));
          RegCloseKey(hKEYResult);
          return;
      }
  }

展开更多 50%)
分享

猜你喜欢

VC++ 中对注册表的操作

编程语言 网络编程
VC++ 中对注册表的操作

怎样在VC++中访问和修改注册表

编程语言 网络编程
怎样在VC++中访问和修改注册表

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在VC++中访问和修改系统注册表

编程语言 网络编程
在VC++中访问和修改系统注册表

C#中对注册表的操作

电脑网络
C#中对注册表的操作

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何在VC++中使用注册表

编程语言 网络编程
如何在VC++中使用注册表

使用Java操作Windows注册表

编程语言 网络编程
使用Java操作Windows注册表

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Mac连接打印机的方法

Mac连接打印机的方法

轻松实现类VC界面(窗口停靠)

轻松实现类VC界面(窗口停靠)
下拉加载更多内容 ↓