RegOpenKeyEx

1相关介绍

功能描述

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

原型

1
2
3
4
5
6
7
LONG  RegOpenKeyEx(
     HKEY  hKey,  // 需要打开的主键的名称
     LPCTSTR  lpSubKey,  //需要打开的子键的名称
     DWORD  ulOptions,  // 保留,设为0
     REGSAM samDesired,  // 安全访问标记,也就是权限
     PHKEY  phkResult  // 得到的将要打开键的句柄
)

2参数

hKey
[输入] 当前打开或者以下预定义的键。
HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSWindows NT/2000/XP: HKEY_PERFORMANCE_DATAWindows 95/98/Me: HKEY_DYN_DATA
lpSubKey
[输入] 指向一个非中断字符串包含将要打开键的名称。如果参数设置为NULL 或者指向一个 空字符串,过程将打开一个新的句柄由hKey参数确定的值。这种情况下,过程不会关闭先前已经打开的句柄。
ulOptions
保留,必须设置为 0
samDesired
[输入] 对指定键希望得到的访问权限的访问标记。 这个参数可以使下列值的联合。
值 Meaning
备注
不像  RegCreateKeyEx 函数,当指定键不存在  RegOpenKeyEx函数不创建新键。
Windows 95/98/Me: 注册表子键或值名称不能超过255字符。
Windows 95/98/Me: RegOpenKeyExW 被 Microsoft Layer for Unicode。 想要使用, 你必须在你的应用程序中包含某些文件。

3返回值

返回值 如果函数调用成功,则返回0(ERROR_SUCCESS)。否则,返回值为文件WINERROR.h中定义的一个非零的错误代码。

4示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//-- 转换基础键
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支持

转载于:https://www.cnblogs.com/zhuzhuxia480/p/4138238.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值