通过代码访问注册表读取本机GUID的方式——32位程序访问64位操作系统注册表

本文介绍了在编写Cuckoo Sandbox测试签名时遇到的问题,即32位程序如何正确地在64位操作系统上访问注册表中的GUID。通过分析错误代码2,发现是由于缺少KEY_WOW64_64KEY权限导致系统将访问重定向至HKLMSoftwareWow6432Node。添加该权限后,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先必须承认的是,某些细节处理上经验还是欠缺,真的是……唉唉

有需求才会产生问题,最近在研究Cuckoo Sandbox,于是为了测试我自己写的Signatures是否有效,就需要自己写Demo,为了测试正在读取本机GUID的操作签名,我就写了以下Demo:

HKEY hKeyResult = NULL;
	HKEY hKeyResultG = NULL;
	CHAR szLocation[MAX_PATH] = { '\0' };
	CHAR szLocationG[MAX_PATH] = { '\0' };
	DWORD dwSize = 0;
	DWORD dwSizeG = 0;
	DWORD dwDataType = 0;
	DWORD dwDataTypeG = 0;
	LONG ret;
	LONG retG;
	char *lpSubKey = "SYSTEM\\CONTROLSET001\\CONTROL\\COMPUTERNAME\\ACTIVECOMPUTERNAME";
	char *KeyValue = "ComputerName";

	char *lpSubKeyG = "SOFTWARE\\MICROSOFT\\CRYPTOGRAPHY";
	char *KeyValueG = "MachineGuid";

	/************************************************************************/
	/* 功能:
	打开对应注册表项
	获取当前计算机名
	/************************************************************************/
	if (ERROR_SUCCESS == RegOpenKeyExA(HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_QUERY_VALUE, &hKeyResult))
	{
		ret = RegQueryValueExA(hKeyResult, KeyValue, 0, &dwDataType, NULL, &dwSize);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值