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

时间: 2024-07-30 17:48:46

RegOpenKeyEx的相关文章

RegOpenKeyEx 返回值 2 x64 系统

RegOpenKeyEx 返回值 2  x64 系统: 32bit 应用程序调用RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft", 0, KEY_WOW64_64KEY | KEY_READ, &hKey ); 注意 KEY_WOW64_64KEY 权限值必须使用否则将查找不到指定的路径.

RegOpenKeyEx 打开一个指定的注册表键

LONG RegOpenKeyEx( HKEY hKey, // 需要打开的主键的名称 LPCTSTR lpSubKey, //需要打开的子键的名称 DWORD ulOptions, // 保留,设为0 REGSAM samDesired, // 安全访问标记,也就是权限 PHKEY phkResult // 得到的将要打开键的句柄 ) hKey [输入] 当前打开或者以下预定义的键. HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE

MFC应用程序开机自启动

void CGestureRecognitionDlg::AutoStart(BOOL IsAutoStart) { HKEY hKey; CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); //找到系统的启动项 if (IsAutoStart) { if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS,

设置Qt程序在Windows开机后自动运行

(转自:http://blog.csdn.net/weiren2006/article/details/7443362) 让软件在系统启动时自动运行,可通过修改注册表实现. 在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加需启动的程序路径,代码如下: voidautoStart(boolflag){//写入注册表,开机自启动HKEYhKey;//找到系统的启动项LPCTSTRlpRun=(wchar_t*)

“基于移动(USB)端口的数据保密及信息恢复管理系统”暑期科创设计报告

一.作品总体设计 “基于USB端口的数据保密及信息恢复管理软件”以安全软件与USB设备为载体,以各项功能为手段,以持续性服务为支撑,打造出集监测.防御.控制为一体的新型安全体系——SDCS(Spy Defense Control System). 该体系的所有功能实现与服务支撑都由安全性软件和带有USB端口的设备共同构成.每份软件与USB硬件设备(U盘)单独匹配,在加解密时只有匹配成功才可进行相应操作,否则只能登陆软件进行简单磁盘监控.USB端口设备带有认证功能,在后期可以由此构成了企业的多级安

【技术·水】浅谈Dism++清理插件开发

前言 昨天我发布了NCleaner,一款Dism++清理插件(地址:http://bbs.pcbeta.com/viewthread-1692182-1-1.html) 有些人想要我开源NCleaner:我只能说很遗憾,鉴于国内环境,是不可能的.我就说个真实故事吧(其实很悲哀) 曾经,一位大牛写了一个充满了黑科技的软件,在论坛发布并公布了源代码某天,那位大牛发现某些人修改他的源代码用于商业用途,更可气的是某些人只修改了软件的名字最终,那位大牛改掉了他的软件名,从此再也不公布主程序源代码那个软件就

LUA调用 Dll 添加收藏夹操作!!!IE Chrome

// AddFavorate.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include "atlbase.h" #include <iostream> #include <fstream> #include <string> #include "stdlib.h" #include

一个简单的反射连接程序(修改文件时间,以及创建Windows服务)

program SvrDemo; uses  Windows,  WinSvc,  winsock; const  RegName = 'SvrDemo'; var  szServiceName: pchar = 'SvrDemo';  szFileName:pchar;  ServiceTable: array [0..1] of TServiceTableEntry;  Status: SERVICE_STATUS;  StatusHandle: SERVICE_STATUS_HANDLE;

OD调试程序常用断点大全

常用断点 拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本 拦截消息框: bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框 bp IsDialogMessageW 拦截警告声: bp MessageBe