void CfgTest::CheckCfgAndRegValueDwordAsBool(CFGDB_HANDLE cdhDb, HKEY hk, LPCWSTR wzCfgName, LPCWSTR wzName, BOOL fExpectedValue) { HRESULT hr = S_OK; DWORD dwValue = 0; BOOL fValue = FALSE; hr = RegReadNumber(hk, wzName, &dwValue); ExitOnFailure1(hr, "Failed to read registry dword:%ls", wzName); if ((dwValue == 0) != (fExpectedValue == 0)) { hr = E_FAIL; ExitOnFailure2(hr, "Wrong value in registry! Expected value %s, found value %u", fExpectedValue ? "1" : "0", dwValue); } hr = CfgGetBool(cdhDb, wzCfgName, &fValue); ExitOnFailure1(hr, "Failed to read cfg db bool:%ls", wzCfgName); if (fExpectedValue != fValue) { hr = E_FAIL; ExitOnFailure2(hr, "Wrong value in cfg db! Expected bool value %u, found bool value %u", fExpectedValue, fValue); } LExit: return; }
extern "C" HRESULT DAPI PolcReadNumber( __in_z LPCWSTR wzPolicyPath, __in_z LPCWSTR wzPolicyName, __in DWORD dwDefault, __out DWORD* pdw ) { HRESULT hr = S_OK; HKEY hk = NULL; hr = OpenPolicyKey(wzPolicyPath, &hk); if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) { ExitFunction1(hr = S_FALSE); } ExitOnFailure1(hr, "Failed to open policy key: %ls", wzPolicyPath); hr = RegReadNumber(hk, wzPolicyName, pdw); if (E_FILENOTFOUND == hr || E_PATHNOTFOUND == hr) { ExitFunction1(hr = S_FALSE); } ExitOnFailure2(hr, "Failed to open policy key: %ls, name: %ls", wzPolicyPath, wzPolicyName); LExit: ReleaseRegKey(hk); if (S_FALSE == hr || FAILED(hr)) { *pdw = dwDefault; } return hr; }
void CfgTest::CheckCfgAndRegValueDword(CFGDB_HANDLE cdhDb, HKEY hk, LPCWSTR wzCfgName, LPCWSTR wzName, DWORD dwExpectedValue) { HRESULT hr = S_OK; DWORD dwValue = 0; hr = RegReadNumber(hk, wzName, &dwValue); ExitOnFailure1(hr, "Failed to read registry dword:%ls", wzName); if (dwExpectedValue != dwValue) { hr = E_FAIL; ExitOnFailure2(hr, "Wrong value in registry! Expected value %u, found value %u", dwExpectedValue, dwValue); } hr = CfgGetDword(cdhDb, wzCfgName, &dwValue); ExitOnFailure1(hr, "Failed to read cfg db dword:%ls", wzCfgName); if (dwValue != dwExpectedValue) { hr = E_FAIL; ExitOnFailure2(hr, "Wrong value in cfg db! Expected dword value %u, found dword value %u", dwExpectedValue, dwValue); } LExit: return; }
static HRESULT RegDefaultReadValueDword( __in CFGDB_STRUCT *pcdb, __in HKEY hkKey, __in_z LPCWSTR wzValueName, __in_z LPCWSTR wzCfgValueName ) { HRESULT hr = S_OK; DWORD dwValue = 0; CONFIG_VALUE cvNewValue = { }; hr = RegReadNumber(hkKey, wzValueName, &dwValue); ExitOnFailure(hr, "Failed to read dword value from registry: %ls", wzValueName); hr = ValueSetDword(dwValue, NULL, pcdb->sczGuid, &cvNewValue); ExitOnFailure(hr, "Failed to set string value %ls in memory", wzCfgValueName); hr = ValueWrite(pcdb, pcdb->dwAppID, wzCfgValueName, &cvNewValue, TRUE, NULL); ExitOnFailure(hr, "Failed to set value in db: %ls", wzCfgValueName); LExit: ReleaseCfgValue(cvNewValue); return hr; }