您的位置:首页 > 其它

VC注册表写入和读取字符串

2017-06-03 14:49 411 查看
关于注册表读写的文章网上有很多,但是真的要用到的时候发现很难找到直接向注册表读写Cstring字符串的文章
void CTestDlg::WirteREG(void)
{
int nIndex=1;
Cstring strr1.Format("%i,%i,%i",1,2,3);
Cstring strr.Format("CmSet%i",nIndex);
HKEY hKey = nullptr;
//创建成功,将得到hKey,一个注册表句柄,用于下面操作注册表
if (ERROR_SUCCESS != RegCreateKey(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), &hKey))
{
AfxMessageBox(TEXT("创建注册表失败"));
return;
}
//写入注册表                                  //类型  //名称 //字符个数
//只能写入一个value
if (ERROR_SUCCESS != RegSetValue(hKey,nullptr,REG_SZ,TEXT("Test"),4))
{
AfxMessageBox(TEXT("写入注册表失败"));
return;
}
if (hKey ==nullptr)
{
return;
}
LONG lRet = 0;

LPSTR lpPath = (LPSTR)(LPCTSTR)strr1;
//这个函数可以写入更多的Value                    //名称 //强制为零 //类型        //数据
if (ERROR_SUCCESS != (lRet = RegSetValueEx(hKey, TEXT(strr), 0, REG_SZ, (CONST BYTE *)lpPath, strr1.GetLength())))
{
AfxMessageBox(TEXT("写入注册表失败Ex"));
return;
}
AfxMessageBox(TEXT("写入注册表成功!"));
RegCloseKey(hKey);
}

void CTestDlg::ReadREG(void)
{
LONG lValue = 0;
//先读取数据的长度
RegQueryValue(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), nullptr, &lValue);
TCHAR *pBuf = new TCHAR[lValue];
RegQueryValue(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), pBuf, &lValue);
AfxMessageBox(pBuf);

HKEY hKey = nullptr;
DWORD dwTpye = REG_SZ;
DWORD dwValue = MAX_PATH;//这个大小一定要先求出来,否则会出错(234)
TCHAR data[MAX_PATH];
LONG lRet = 0;
//打开注册表
RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SoftWare\\CXTest\\set"),0, KEY_ALL_ACCESS,&hKey);
//RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), &hKey);
//读注册表                                          //valuename      //返回value类型 //数据缓存区 //缓存区大小
if (ERROR_SUCCESS != (lRet = RegQueryValueEx(hKey, TEXT("CmSet1"), 0, &dwTpye, (LPBYTE)data, &dwValue)))
{
AfxMessageBox(TEXT("读取注册表失败!"));
return;
}
AfxMessageBox(TEXT("读取注册表成功!"));
CString s;
s.Format(data);
sscanf(s,"%i,%i",&cc,&xx);
AfxMessageBox(s);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: