RegOpenKeyEx函数

RegOpenKeyEx函数打开指定的注册表项。

1LONG RegOpenKeyEx( 2 HKEY hKey, // handle to open key 3 LPCTSTR lpSubKey, // subkey name 4 DWORD ulOptions, // reserved 5 REGSAM samDesired, // security access mask 6 PHKEY phkResult // handle to open key 7);

参数

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:保留;必须是零。

samDesired:一个访问掩码,它指定对密钥的期望访问权限。这个参数可以是以下值的组合。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_READ、KEY_WOW64_64KEY、KEY_WOW64_32KEY、KEY_WRITE。

phkResult:指向变量的指针,该变量接收打开的键的句柄。当您不再需要返回的句柄时,请调用RegCloseKey函数来关闭它。

返回值

如果函数成功,返回值为ERROR_SUCCESS。 如果函数失败,返回值是Winerror.h中定义的非零错误代码。您可以使用FormatMessage函数和FORMAT_MESSAGE_FROM_SYSTEM标志来获得错误的通用描述。

示例代码:

1#include<stdio.h> 2#include<conio.h> 3#include<windows.h> 4void main(void) 5{ 6 long lRet; 7 HKEY hKey; 8 TCHAR tchData[64]; 9 DWORD dwSize; 10 lRet=RegOpenKeyEx( 11 HKEY_LOCAL_MACHINE, // handle to open key 12 "Hardware\\Description\\System\\CentralProcessor\\0", // subkey name 13 0, // reserved 14 KEY_QUERY_VALUE, // security access mask 15 &hKey // handle to open key 16 ); 17 if(lRet==ERROR_SUCCESS) 18 { 19 dwSize=sizeof(tchData); 20 lRet=RegQueryValueEx( 21 hKey, // handle to key 22 "ProcessorNameString", // value name 23 NULL, // reserved 24 NULL, // type buffer 25 (LPBYTE)tchData, // data buffer 26 &dwSize // size of data buffer 27 ); 28 if(lRet==ERROR_SUCCESS) 29 { 30 printf("\n CPU INFO:"); 31 printf("%s\n",tchData); 32 } 33 //以下是失败的内容 34 else 35 { 36 printf("\nCPU INFO:"); 37 printf("UNKNOWN\n"); 38 } 39 } 40 //以下是打开失败 41 else 42 { 43 printf("\n CPU INFO:"); 44 printf("UNKNOWN\n"); 45 } 46 RegCloseKey(hKey); 47 getch(); 48}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )