OSDN Git Service

Use the reg command to import/export properties master
authorYujiSoftware <yuji.software+github@gmail.com>
Fri, 27 Apr 2018 11:51:52 +0000 (20:51 +0900)
committerKazuhiro Fujieda @kfujieda <fujieda@acm.org>
Fri, 27 Apr 2018 11:51:52 +0000 (20:51 +0900)
Import/export properties fail because the regedit command can't run for lack of administrator privileges. Use the reg command instead.

xkeymacs/profile.cpp
xkeymacsdll/Utils.cpp
xkeymacsdll/Utils.h

index f01749b..c584f57 100644 (file)
@@ -528,8 +528,8 @@ void CProfile::ImportProperties()
        CFileDialog oFileOpenDialog(TRUE, _T("reg"), _T("xkeymacs"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, CString(MAKEINTRESOURCE(IDS_REGISTRATION_FILTER)));\r
        if (oFileOpenDialog.DoModal() == IDOK) {\r
                CString szCommandLine;\r
-               szCommandLine.Format(_T("regedit \"%s\""), oFileOpenDialog.GetPathName());\r
-               CUtils::Run(szCommandLine, TRUE);       // regedit "x:\xkeymacs.reg"\r
+               szCommandLine.Format(_T("reg import \"%s\""), oFileOpenDialog.GetPathName());\r
+               CUtils::Run(szCommandLine, TRUE, TRUE); // reg import "x:\xkeymacs.reg"\r
        }\r
 \r
        DiableTokenPrivileges();\r
@@ -545,8 +545,8 @@ void CProfile::ExportProperties()
        CFileDialog oFileOpenDialog(FALSE, _T("reg"), _T("xkeymacs"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, CString(MAKEINTRESOURCE(IDS_REGISTRATION_FILTER)));\r
        if (oFileOpenDialog.DoModal() == IDOK) {\r
                CString szCommandLine;\r
-               szCommandLine.Format(_T("regedit /e \"%s\" HKEY_CURRENT_USER\\%s"), oFileOpenDialog.GetPathName(), CString(MAKEINTRESOURCE(IDS_REGSUBKEY_DATA)));\r
-               CUtils::Run(szCommandLine, TRUE);       // regedit /e "x:\xkeymacs.reg" HKEY_CURRENT_USER\Software\Oishi\XKeymacs2\r
+               szCommandLine.Format(_T("reg export HKEY_CURRENT_USER\\%s \"%s\" /y"), CString(MAKEINTRESOURCE(IDS_REGSUBKEY_DATA)), oFileOpenDialog.GetPathName());\r
+               CUtils::Run(szCommandLine, TRUE, TRUE); // reg export HKEY_CURRENT_USER\Software\Oishi\XKeymacs2 "x:\xkeymacs.reg" /y\r
        }\r
 \r
        DiableTokenPrivileges();\r
index 4636ec6..f21aeec 100644 (file)
@@ -676,11 +676,15 @@ BOOL CUtils::IsBorlandCppBuilder()
        return AppName::Match(_T("bcb.exe"));\r
 }\r
 \r
-BOOL CUtils::Run(CString szCommandLine, BOOL isWait)\r
+BOOL CUtils::Run(CString szCommandLine, BOOL isWait, BOOL isHide)\r
 {\r
        STARTUPINFO si;\r
        ZeroMemory(&si, sizeof(si));\r
        si.cb = sizeof(si);\r
+       if (isHide) {\r
+               si.dwFlags = STARTF_USESHOWWINDOW;\r
+               si.wShowWindow = SW_HIDE;\r
+       }\r
 \r
        PROCESS_INFORMATION pi;\r
        ZeroMemory(&pi, sizeof(pi));\r
index 3cee61b..2a30746 100644 (file)
@@ -25,7 +25,7 @@ public:
        static BOOL IsVisualSlickEdit();\r
        static BOOL IsMSDN();\r
        static BOOL IsJavaW();\r
-       static BOOL Run(CString szCommandLine, BOOL isWait = FALSE);\r
+       static BOOL Run(CString szCommandLine, BOOL isWait = FALSE, BOOL isHide = FALSE);\r
        static BOOL IsBorlandCppBuilder();\r
        static BOOL IsLispWorksPersonalEdition();\r
        static BOOL IsTeraPad();\r