#include <atlstr.h>
LSTATUS getReg(HKEY mainKey, CString itemKey, CString itemName, CString& outRegV)
{
const int MAX_LEG = 1024 * sizeof(TCHAR);
TCHAR regBufferValue[MAX_LEG];
ZeroMemory(regBufferValue, MAX_LEG);
DWORD dwRegSize = MAX_LEG;
DWORD regType = REG_SZ;
LSTATUS stat = -1;
CRegKey regKey;
//32位应用写入注册表的值,如果是64位应用去读取的话需要在读的时候加入 KEY_WOW64_32KEY 标志
//stat = regKey.Open(mainKey, itemKey, KEY_READ | KEY_WOW64_32KEY);
stat = regKey.Open(mainKey, itemKey, KEY_READ);
if (ERROR_SUCCESS == stat) {
stat = regKey.QueryValue((LPCTSTR)itemName, ®Type, regBufferValue, &dwRegSize);
if (ERROR_SUCCESS == stat) {
outRegV = regBufferValue;
return ERROR_SUCCESS;
}
}
return stat;
}
使用:
读取 KWPS.PDF.9 的值
LSTATUS stat = ERROR_SUCCESS;
CString storeLoc;
stat = getReg(HKEY_CURRENT_USER,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\UserChoice"),
_T("InstallLocation"), storeLoc);