请输入您要查询的百科知识:

 

词条 RegOpenKeyEx
释义

相关介绍

功能描述

RegOpenKeyEx()

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

原型

LONG RegOpenKeyEx(

HKEY hKey, // 需要打开的主键的名称

LPCTSTR lpSubKey, //需要打开的子键的名称

DWORD ulOptions, // 保留,设为0

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支持

相关函数

RegCloseKey RegSetValueEx

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/6 11:51:16