RegOpenKeyEx()(转)

原创 2007年09月24日 17:01:00
 RegOpenKeyEx()

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

函数原型:

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支持
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

RegOpenKeyEx和RegCreateKeyEx函数

由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存...

注册表操作RegOpenKeyEx()

功能描述   RegOpenKeyEx()   函数功能描述:打开一个指定的注册表键 原型   LONG RegOpenKeyEx(   HKEY hKey, // 需要打开的主键的...

RegOpenKeyEx和RegCreateKeyEx函数

由于电脑经常会关闭,或者应用程序也会经常关闭,但有一些参数是经常需要保存。比如当你打开程序,并设置了窗口的大小,想每次打开时都设置窗口为上次打开的大小。这样就需要保存窗口的大小,那么窗口大小的参数保存...
  • softn
  • softn
  • 2012-05-06 15:28
  • 138

regopenkeyex用法

RegCreateKeyEx 通过RegCreateKeyEx函数可以在 .... RegSetValueEx函数可以设置注册表中键的值, 如今修改注册表成为继超频之后的又一大热点,许多CFAN通过...

java后台汉字转拼音

转后缀的简单计算器

设计模式之观察者模式(转)

出处:http://www.ctolib.com/topics-112635.html 观察者模式 定义 定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通...

CP2102 串口转USB 驱动

  • 2017-09-27 17:01
  • 3.26MB
  • 下载

BCB 截屏 转jpeg 压缩,上传

  • 2017-09-27 13:37
  • 3.77MB
  • 下载

计算机视觉caffe之路附3: Caffe均值文件mean.binaryproto转mean.npy

转: Caffe均值文件mean.binaryproto转mean.npy1.mean.binaryproto转mean.npy使用Caffe的C++接口进行操作时,需要的图像均值文件是pb格式,例如...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)