C++讀取註冊表信息與寫入信息到註冊表

//讀註冊表
std::wstring CRegInfo::GetRegValue(HKEY hKeyType, DWORD dwType, LPCTSTR lpPath, LPCTSTR lpName)
{
HKEY hKEY;
DWORD dataSize = MAX_PATH;
char data[MAX_PATH];
std::string strValue("");
if (RegOpenKeyEx(hKeyType, lpPath, NULL, KEY_READ, &hKEY) == ERROR_SUCCESS) //如果無法打開hKEY,則中止程序的執行
{
long lRet = RegQueryValueEx(hKEY, lpName, NULL, &dwType, (LPBYTE)data, &dataSize);
if (lRet == ERROR_SUCCESS)
{
for (int i = 0; i < (int)dataSize; i++)
{
strValue = strValue + data[i];
}
}
RegCloseKey(hKEY); // 程序結束前要關閉已經打開的 hKEY。
}
else
{
RegCreateKeyEx(hKeyType, (LPCTSTR)lpPath, 0, NULL, NULL, KEY_WRITE, NULL, &hKEY, NULL);
RegCloseKey(hKEY); // 程序結束前要關閉已經打開的 hKEY。
}
std::wstring wstrValue((wchar_t*)strValue.data(), strValue.length() / 2);
return wstrValue;
}
eg:
std::wstring strValue;
strValue = GetRegValue(HKEY_LOCAL_MACHINE, REG_SZ, L"SoftWare\Microsoft\Windows\CurrentVersion\App Paths\WebService", L"WebServiceIP");

//寫註冊表
void WriteRegedit(LPCTSTR m_path, LPCTSTR m_name, CString strParame)
{
HKEY hKEY;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, m_path, NULL, KEY_WRITE, &hKEY) == ERROR_SUCCESS) //如果無法打開hKEY,則中止程序的執行
{
RegSetValueEx(hKEY, m_name, NULL, REG_SZ, (BYTE*)strParame.GetBuffer(strParame.GetLength()), 2 * strParame.GetLength());
strParame.ReleaseBuffer();
RegCloseKey(hKEY);
}
else
{
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)m_path, 0, NULL, NULL, KEY_WRITE, NULL, &hKEY, NULL);
RegSetValueEx(hKEY, m_name, NULL, REG_SZ, (BYTE*)strParame.GetBuffer(strParame.GetLength()), 2 * strParame.GetLength());
strParame.ReleaseBuffer();
RegCloseKey(hKEY);
}
}
eg:
m_RegInfo.WriteRegedit(_T(“SoftWare\Microsoft\Windows\CurrentVersion\App Paths\WebService”), _T(“WebServiceIP”), _T(“192.168.0.0”));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章