Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1590771
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2006-12-29 17:36:22

                               注册表操作
 
1、删除键值为"Family"的项
 
HKEY hKEY;
LPCTSTR lpszSubKey;
LONG ret;
 
LPCTSTR Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run" ;
 
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE, &hKEY);
 
if(ret!=ERROR_SUCCESS)
{
    RegCloseKey(hKEY);
    return;
}
 
ret = RegDeleteValue(hKEY,_T("Family"));
 
if(ret!=ERROR_SUCCESS)
{
    RegCloseKey(hKEY);
    return;
}
RegCloseKey(hKEY);
 
2、判断"ProductType"这个键是否存在
 
HKEY hKey;
char szProductType[BUFSIZE];
DWORD dwBufLen=BUFSIZE;
LONG lRet;
 
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
if( lRet != ERROR_SUCCESS )
return ;
 
lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
return ;
 
RegCloseKey( hKey );
 
3、以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询
 
 HKEY hKEY;
 HKEY hKEYResult;
 LPCTSTR lpszSubKey;
 LPCTSTR lpszValueName;
 LONG ret;
 DWORD dwType;
 DWORD dwSize;
 
 hKEY = HKEY_LOCAL_MACHINE;
 lpszSubKey = _T("SOFTWARE\\MyProgram");
 
 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));         // 数据长度
 
          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;
      }
  }
 
 
阅读(1079) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~