@@ -16,6 +16,22 @@ namespace OCLRT {
1616SettingsReader *SettingsReader::createOsReader (bool userScope) {
1717 return new RegistryReader (userScope);
1818}
19+ SettingsReader *SettingsReader::createOsReader (const std::string ®Key) {
20+ return new RegistryReader (regKey);
21+ }
22+ void RegistryReader::setUpProcessName () {
23+ char buff[MAX_PATH];
24+ GetModuleFileNameA (nullptr , buff, MAX_PATH);
25+ if (GetLastError () == ERROR_INSUFFICIENT_BUFFER) {
26+ processName = " " ;
27+ }
28+ processName.assign (buff);
29+ }
30+ const char *RegistryReader::appSpecificLocation (const std::string &name) {
31+ if (processName.length () > 0 )
32+ return processName.c_str ();
33+ return name.c_str ();
34+ }
1935
2036bool RegistryReader::getSetting (const char *settingName, bool defaultValue) {
2137 return getSetting (settingName, static_cast <int32_t >(defaultValue)) ? true : false ;
@@ -27,7 +43,7 @@ int32_t RegistryReader::getSetting(const char *settingName, int32_t defaultValue
2743 DWORD success = ERROR_SUCCESS;
2844
2945 success = RegOpenKeyExA (igdrclHkeyType,
30- igdrclRegKey .c_str (),
46+ registryReadRootKey .c_str (),
3147 0 ,
3248 KEY_READ,
3349 &Key);
@@ -52,11 +68,10 @@ int32_t RegistryReader::getSetting(const char *settingName, int32_t defaultValue
5268std::string RegistryReader::getSetting (const char *settingName, const std::string &value) {
5369 HKEY Key;
5470 DWORD success = ERROR_SUCCESS;
55- bool retFlag = false ;
5671 std::string keyValue = value;
5772
5873 success = RegOpenKeyExA (igdrclHkeyType,
59- igdrclRegKey .c_str (),
74+ registryReadRootKey .c_str (),
6075 0 ,
6176 KEY_READ,
6277 &Key);
@@ -80,10 +95,8 @@ std::string RegistryReader::getSetting(const char *settingName, const std::strin
8095 ®Type,
8196 (LPBYTE)regData,
8297 ®Size);
83-
8498 keyValue.assign (regData);
8599 delete[] regData;
86- retFlag = true ;
87100 } else if (success == ERROR_SUCCESS && regType == REG_BINARY) {
88101 std::unique_ptr<wchar_t []> regData (new wchar_t [regSize]);
89102 success = RegQueryValueExA (Key,
@@ -99,11 +112,11 @@ std::string RegistryReader::getSetting(const char *settingName, const std::strin
99112 wcstombs_s (&charsConverted, convertedData.get (), regSize, regData.get (), regSize);
100113
101114 keyValue.assign (convertedData.get ());
102- retFlag = true ;
103115 }
104116
105117 RegCloseKey (Key);
106118 }
107119 return keyValue;
108120}
121+
109122}; // namespace OCLRT
0 commit comments