mfc 注册表

#include <windows.h>

typedef BOOL(WINAPI* LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
BOOL RegWriteString(HKEY hKey, string keyName, string keyValue, bool valueResult)
{
	if (keyValue == "") {
		return valueResult;
	}
	return RegSetValueEx(hKey, keyName.c_str(), 0, REG_SZ, (const BYTE*)keyValue.c_str(), strlen(keyValue.c_str()));
}

LPFN_ISWOW64PROCESS
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
	GetModuleHandle("kernel32"), "IsWow64Process");

BOOL SystemUtil::IsWow64()
{
	BOOL bIsWow64 = FALSE;

	if (NULL != fnIsWow64Process)
	{
		if (!fnIsWow64Process(GetCurrentProcess(), &bIsWow64))
		{
			// handle error
		}
	}
	return bIsWow64;
}
/// <summary>
/// 读取指定的key
/// </summary>
/// <param name="displayName"></param>
/// <returns></returns>
/// <summary>
/// 获取32/64对应的注册表值
/// </summary>
/// <returns></returns>
string GetUninstallKey() {
	if (IsWow64()) {
		return  "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
	}
	else {
		return   "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
	}
}
CString GetRegKeyString(string displayName, const char* subKey) {
	string key = GetUninstallKey() + displayName;
	LONG ires;
	HKEY hMyKey;
	DWORD Type = REG_SZ;
	DWORD count = 256;
	byte mstr[256] = "";
	ires = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key.c_str(), 0,
		KEY_READ, &hMyKey);
	if (ERROR_SUCCESS != ires)
		return "";
	else
		ires = RegQueryValueEx(hMyKey, subKey, 0, &Type,
			mstr, &count);
	ires = RegCloseKey(hMyKey);
	CString tms = (LPCTSTR)mstr;

	return tms;
}

读取注册表DWORD

	HKEY key;
	LPBYTE path_Get = new BYTE[254];
	DWORD type = REG_SZ;
	DWORD dwBytes = 254;

	DWORD dwordValue = 0;
	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "key", 0, KEY_READ, &key) == ERROR_SUCCESS)
	{
		if (RegQueryValueEx(key, "item", NULL, &type, (PBYTE)&dwordValue, &dwBytes) == ERROR_SUCCESS) {
			//dwordValue 为实际值
		}
	}
posted @ 2021-06-18 17:47  Hey,Coder!  阅读(95)  评论(0编辑  收藏  举报