Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523294
  • 博文数量: 576
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5020
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(576)

文章存档

2011年(1)

2008年(575)

我的朋友

分类:

2008-10-14 14:54:48

 
RegOpenKeyEx
函数状态: 正式函数 ,建设者:Deane ,最新更新时间: 2002-11-3 9:47:46

函数功能描述:打开一个制定的注册表键

函数原型:

LONG RegOpenKeyEx(
                   HKEY hKey,         // 已经打开键的句柄
                   LPCTSTR lpSubKey,  // 子键的名称
                   DWORD ulOptions,   // 保留
                   REGSAM samDesired, // 安全访问标记
                   PHKEY phkResult    // 指向将要打开键的句柄
);

参数:

    hKey
        [输入] 当前打开或者以下预定义的键。
                            HKEY_CLASSES_ROOT
                            HKEY_CURRENT_CONFIG
                            HKEY_CURRENT_USER
                            HKEY_LOCAL_MACHINE
                            HKEY_USERS
        Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
          Windows 95/98/Me: HKEY_DYN_DATA

    lpSubKey
        [输入] 指向一个非中断字符串包含将要打开键的名称。如果参数设置为NULL 或者指向一个空字符串,过程将打开一个新的句柄由hKey参数确定的值。这种情况下,过程不会关闭先前已经打开的句柄。


    ulOptions
        保留,必须设置为 0
      
    samDesired
        [输入] 对指定键希望得到的访问权限的访问标记。 这个参数可以使下列值的联合。
                值                                         Meaning
            KEY_CREATE_LINK                     许可创建一个符号连接
            KEY_CREATE_SUB_KEY                  许可创建子键
            KEY_ENUMERATE_SUB_KEYS              许可列举子键
            KEY_EXECUTE                         许可读访问
            KEY_NOTIFY                          许可提供更该通知
            KEY_QUERY_VALUE                     许可查询子键数据
            KEY_SET_VALUE                       许可设置子键数据
            KEY_ALL_ACCESS                      联合了 KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS,
                                                KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK,
                                                KEY_SET_VALUE 访问权限并且加上所有的标准访问权限
                                                除了SYNCHRONIZE  
            KEY_READ                            联合了 STANDARD_RIGHTS_READ, KEY_QUERY_VALUE,
                                                KEY_ENUMERATE_SUB_KEYS,KEY_NOTIFY 访问权限
            KEY_WOW64_64KEY                     Windows XP: 使64位或者32位应用程序打开64位键
            KEY_WOW64_32KEY                     Windows XP: 使64位或者32位应用程序打开32位键
            KEY_WRITE                           联合 STANDARD_RIGHTS_WRITE, KEY_SET_VALUE,  
                                                KEY_CREATE_SUB_KEY访问权限

    phkResult
        [输出] 指向一个被打开键返回的句柄的指针。当不再需要句柄,必须调用 RegCloseKey 关闭它。

返回值:

    如果过程执行成功,返回值是 ERROR_SUCCESS。
    如果功能失败,返回一个非零值,错误码在 Winerror.h 定义。可以使用 FormatMessage 函数 和 FORMAT_MESSAGE_FROM_SYSTEM 标记获得一个分类的错误描述。


备注:

    不像 RegCreateKeyEx 函数,当指定键不存在 RegOpenKeyEx 函数不创建新键。
    Windows 95/98/Me: 注册表子键或值名称不能超过255字符。
    Windows 95/98/Me: RegOpenKeyExW  被 Microsoft Layer for Unicode。 想要使用, 你必须在你的应用程序中包含某些文件。

示例代码:

//-- 转换基础键
HKEY GetBaseRegKey(char* keystr)
{
   HKEY hKey;
   if(strcmp(keystr,"HKEY_CLASSES_ROOT")==0)
      hKey=HKEY_CLASSES_ROOT;
   if(strcmp(keystr,"HKEY_CURRENT_CONFIG")==0)
      hKey=HKEY_CURRENT_CONFIG;
   if(strcmp(keystr,"HKEY_CURRENT_USER")==0)
      hKey=HKEY_CURRENT_USER;
   if(strcmp(keystr,"HKEY_LOCAL_MACHINE")==0)
      hKey=HKEY_LOCAL_MACHINE;
   if(strcmp(keystr,"HKEY_USERS")==0)
      hKey=HKEY_USERS;
   return hKey;
   
}

// 删除一个键值
int RegDelValue()
{
   HKEY bKey,hKey;
   LONG retVal;

   char BaseKey[512];
   char SubKey[512];
   char SubKeyValueName[512];
   
   strcpy(BaseKey,"HKEY_CURRENT_USER");
   strcpy(SubKey,"Control Panel\\Desktop");
   strcpy(SubKeyValueName,"ShowMenuDelay");
   
   bKey = GetBaseRegKey(BaseKey);
   retVal = RegOpenKeyEx(bKey,SubKey,0,KEY_ALL_ACCESS,&hKey);  //-- 打开子键
   if (retVal != ERROR_SUCCESS)
   {
      return 1;
   }

   retVal = RegDeleteValue(hKey,(LPCTSTR)SubKeyValueName);
   if(retVal !=ERROR_SUCCESS)
   {
      RegCloseKey(hKey);   
      return 2;
   }
   RegCloseKey(hKey);
   return 0;
}

需求
    Windows NT/2000/XP: 包含在 Windows NT 3.1 以后版本中。
    Windows 95/98/Me:  包含在 Windows 95 以后版本中。
    Header: Winreg.h; 包含在 Windows.h.
    Library: 使用 Advapi32.lib.
    Unicode: Unicode 和 ANSI 版本在 Windows NT/2000/XP 中支持,也被 Microsoft Layer for Unicode支持

相关函数
    


本函数最新话题
函数搜索 |

--------------------next---------------------

阅读(275) | 评论(0) | 转发(0) |
0

上一篇:查看函数

下一篇:查看函数

给主人留下些什么吧!~~