获取注册表键值并格式转换

目的:需要获取注册表键值,内容是GUID,类型是REG_SZ,

然后再将这个GUID与另一个地址拼成一个新的注册表路径,RegOpenKeyW的路径格式要求为LPCSTR。

这里把获取到的GUID用TCHAR格式存储。

HRESULT GetGUIDReg(TCHAR GUID[])
{
	HRESULT hr = E_FAIL;
	HKEY hKey = NULL;
	hr = RegOpenKey(HKEY_LOCAL_MACHINE, /*注册表的路径*/, &hKey);
	GOTO_IF_FAILED(hr);
	DWORD nRequiredSize = 0;
	hr = ::RegQueryValueEx(hKey, /*注册表名*/, NULL, NULL, NULL, &nRequiredSize);
	GOTO_IF_FAILED(hr);
	// Read data
	DWORD dwType = REG_SZ;
	hr = ::RegQueryValueEx(hKey, /*注册表名*/, NULL, &dwType,
		(LPBYTE)GUID, &nRequiredSize);
	GOTO_IF_FAILED(hr);
Exit:
	RegCloseKey(hKey);
	return hr;
}
使用时,参数是传入传出的。调用时先定义 一个vector:

vector<TCHAR> GUID;
hr=GetGUIDReg(GUID);

格式转换之前,先定义一个basic_string

typedef basic_string<TCHAR> GUIDString;
//使用:
GUIDString strSetting(GUID.begin(),GUID.end());
TCHAR newPath[260]={0};
_tcscat_s(newPath,/*之前的注册表路径*/);//格式转换
_tcscat_s(newPath,_T("\\"));
_tcscat_s(newPath,strSetting.c_str());
_tcscat_s(newPath,_T("\\"));
_tcscat_s(newPath,/*新的注册表名*/);

//格式转换完成后,用同样的方法,将newPath做为新路径,获取新的注册表键值
实际应用:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes

这个是用于存储当前的电源计划的,值是GUID。

根据它的值,再拼接出新的注册表路径获取别的注册表键值。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值