1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#include "clRegistery.hpp"
#include <vector>
#ifdef __WXMSW__
#include "wx/msw/registry.h"
static wxSharedPtr<wxRegKey> TryCreateRegKey(wxRegKey::StdKey stdKey, wxRegKey::WOW64ViewMode mode, const wxString& key)
{
wxSharedPtr<wxRegKey> regKey(new wxRegKey(stdKey, key, mode));
if(!regKey->Exists()) { return wxSharedPtr<wxRegKey>(nullptr); }
return regKey;
}
static wxSharedPtr<wxRegKey> CreateRegKey(const wxString& key)
{
std::vector<wxRegKey::StdKey> K = { wxRegKey::HKCU, wxRegKey::HKLM, wxRegKey::HKLM };
std::vector<wxRegKey::WOW64ViewMode> M = { wxRegKey::WOW64ViewMode_64, wxRegKey::WOW64ViewMode_32 };
for(auto stdkey : K) {
for(auto viewMode : M) {
wxSharedPtr<wxRegKey> regKey = TryCreateRegKey(stdkey, viewMode, key);
if(regKey) { return regKey; }
}
}
return wxSharedPtr<wxRegKey>(nullptr);
}
#endif
clRegistery::clRegistery(const wxString& key)
#ifdef __WXMSW__
: m_key(key)
#endif
{
#ifdef __WXMSW__
m_regKey = CreateRegKey(m_key);
#endif
}
clRegistery::~clRegistery() {}
wxString clRegistery::ReadValueString(const wxString& valueName)
{
wxUnusedVar(valueName);
#ifdef __WXMSW__
if(!m_regKey) { return ""; }
wxString value;
m_regKey->QueryValue(valueName, value);
return value;
#endif
return wxEmptyString;
}
wxString clRegistery::GetFirstChild()
{
wxString childPath;
#ifdef __WXMSW__
if(!m_regKey) { return ""; }
wxString keyname;
if(!m_regKey->GetFirstKey(keyname, m_index)) { return ""; }
childPath << m_key << "\\" << keyname;
#endif
return childPath;
}
|