Index: src/chext/DllRegistration.cpp =================================================================== diff -u -N -r6609ba39811176f4803f0556db3da30e9e457b9d -r7e67996922421c8b79c7c0d20d4d68c7722c4ad8 --- src/chext/DllRegistration.cpp (.../DllRegistration.cpp) (revision 6609ba39811176f4803f0556db3da30e9e457b9d) +++ src/chext/DllRegistration.cpp (.../DllRegistration.cpp) (revision 7e67996922421c8b79c7c0d20d4d68c7722c4ad8) @@ -56,12 +56,22 @@ void DeleteSingleValue(HKEY key, const wchar_t* pszKey, const wchar_t* pszValueKey) { + TRegistry reg(key, pszKey, false, false); + if(reg.IsOpen()) + reg.DeleteValue(pszValueKey); + } + + void CreateNodes(HKEY key, const wchar_t* pszKey, std::wstring strSubKey) + { TRegistry reg(key, pszKey, false); - reg.DeleteValue(pszValueKey); + reg.CreateSubKey(strSubKey.c_str()); } void CreateNodeWithDefaultValue(HKEY key, const wchar_t* pszKey, const wchar_t* pszSubKey, const wchar_t* pszValue) { + // ensure key exists + CreateNodes(key, L"", pszKey); + TRegistry reg(key, pszKey, false); reg.CreateSubKey(pszSubKey); @@ -75,15 +85,10 @@ void DeleteSingleNode(HKEY key, const wchar_t* pszKey, const wchar_t* pszValueKey) { - TRegistry reg(key, pszKey, false); - reg.DeleteSubKey(pszValueKey); + TRegistry reg(key, pszKey, false, false); + if(reg.IsOpen()) + reg.DeleteSubKey(pszValueKey); } - - void CreateNodes(HKEY key, const wchar_t* pszKey, std::wstring strSubKey) - { - TRegistry reg(key, pszKey, false); - reg.CreateSubKey(strSubKey.c_str()); - } } DllRegistration::DllRegistration(HMODULE hModule)