support the HLCU、HKLM etc. in the search edit bar.

This commit is contained in:
CORP\zengquan
2022-07-29 16:01:06 +08:00
parent d81ea49b97
commit 55f6c30731
4 changed files with 27 additions and 15 deletions
+9 -1
View File
@@ -43,7 +43,15 @@ LRESULT CGotoKeyDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPa
{ L"Explorer Context Menu 5",LR"(HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers)" },
{ L"Explorer Context Menu 6",LR"(HKEY_CLASSES_ROOT\Directory\shell)" },
{ L"Explorer Context Menu 7",LR"(HKEY_CLASSES_ROOT\Directory\Background\shell)" },
{ L"Explorer Context Menu 8",LR"(HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers)" }
{ L"Explorer Context Menu 8",LR"(HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers)" },
{L"Run 1",LR"(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)"},
{L"Run 2",LR"(HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)"},
{L"Run 3",LR"(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run)"},
{L"Run 4",LR"(HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run)"},
{L"RunOnce 1",LR"(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce)"},
{L"RunOnce 2",LR"(HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce)"},
{L"RunOnceEx 1",LR"(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx)"},
{L"RunOnceEx 2",LR"(HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx)"}
};
for (const auto& [name, path] : locations) {
+4 -4
View File
@@ -134,8 +134,8 @@ RegistryKey Registry::OpenKey(const CString& path, DWORD access, bool* root) {
keyname = path.Left(bs);
}
// c++11 std::begin
auto pair = std::find_if(std::begin(Keys), std::end(Keys), [&](auto& k) {
return k.text == keyname;
auto pair = std::find_if(std::begin(Keys), std::end(Keys), [&](auto& k) {
return _wcsicmp(k.text, keyname) == 0 || _wcsicmp(k.stext, keyname) == 0;
});
ATLASSERT(pair != std::end(Keys));
if (bs >= 0) {
@@ -164,8 +164,8 @@ CRegKey Registry::CreateKey(const CString& path, DWORD access) {
ATLASSERT(bs >= 0);
keyname = path.Left(bs);
}
auto pair = std::find_if(std::begin(Keys), std::end(Keys), [&](auto& k) {
return k.text == keyname;
auto pair = std::find_if(std::begin(Keys), std::end(Keys), [&](auto& k) {
return wcscmp(k.text, keyname) == 0;
});
ATLASSERT(pair != std::end(Keys));
+10 -9
View File
@@ -65,17 +65,18 @@ struct Registry abstract final {
static inline const struct {
PCWSTR text;
PCWSTR stext;
HKEY hKey;
}Keys[]{
{ L"HKEY_CLASSES_ROOT", HKEY_CLASSES_ROOT },
{ L"HKEY_CURRENT_USER", HKEY_CURRENT_USER },
{ L"HKEY_LOCAL_MACHINE", HKEY_LOCAL_MACHINE },
{ L"HKEY_USERS", HKEY_USERS },
{ L"HKEY_CURRENT_CONFIG", HKEY_CURRENT_CONFIG },
{ L"HKEY_PERFORMANCE_DATA", HKEY_PERFORMANCE_DATA },
{ L"HKEY_PERFORMANCE_TEXT", HKEY_PERFORMANCE_TEXT },
{ L"HKEY_PERFORMANCE_NLSTEXT", HKEY_PERFORMANCE_NLSTEXT },
{ L"HKEY_CURRENT_USER_LOCAL_SETTINGS", HKEY_CURRENT_USER_LOCAL_SETTINGS },
{ L"HKEY_CLASSES_ROOT", L"HKCR",HKEY_CLASSES_ROOT},
{ L"HKEY_CURRENT_USER",L"HKCU", HKEY_CURRENT_USER},
{ L"HKEY_LOCAL_MACHINE",L"HKLM", HKEY_LOCAL_MACHINE},
{ L"HKEY_USERS",L"HKU", HKEY_USERS},
{ L"HKEY_CURRENT_CONFIG",L"HKCC", HKEY_CURRENT_CONFIG},
{ L"HKEY_PERFORMANCE_DATA",L"", HKEY_PERFORMANCE_DATA},
{ L"HKEY_PERFORMANCE_TEXT",L"", HKEY_PERFORMANCE_TEXT},
{ L"HKEY_PERFORMANCE_NLSTEXT",L"", HKEY_PERFORMANCE_NLSTEXT },
{ L"HKEY_CURRENT_USER_LOCAL_SETTINGS",L"", HKEY_CURRENT_USER_LOCAL_SETTINGS },
};
private:
+4 -1
View File
@@ -118,7 +118,7 @@ LRESULT CRegistryManagerView::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam,
auto hr = spAC.CoCreateInstance(CLSID_AutoComplete);
if (SUCCEEDED(hr)) {
m_AutoCompleteStrings->CreateInstance(&m_AutoCompleteStrings);
CRect r(0, 0, 400, 20);
CRect r(0, 0, 800, 20);
CEdit edit;
auto hEdit = edit.Create(m_hWnd, &r, nullptr, WS_CHILD | WS_VISIBLE |
ES_AUTOHSCROLL | ES_WANTRETURN | WS_CLIPSIBLINGS, WS_EX_WINDOWEDGE);
@@ -1212,6 +1212,9 @@ AppCommandCallback<DeleteKeyCommand> CRegistryManagerView::GetDeleteKeyCommandCa
}
LRESULT CRegistryManagerView::OnEditPaste(WORD, WORD, HWND, BOOL&){
if (m_Clipboard.Items.empty()) {
return 0;
}
ATLASSERT(!m_Clipboard.Items.empty());
auto cb = [this](auto& cmd, bool) {
RefreshItem(m_Tree.GetSelectedItem());