Revisión | ae9ad576b37bb3dc4b283cbe6bf172c263d3b6ef (tree) |
---|---|
Tiempo | 2018-04-27 20:51:52 |
Autor | YujiSoftware <yuji.software+github@gmai...> |
Commiter | Kazuhiro Fujieda @kfujieda |
Use the reg command to import/export properties
Import/export properties fail because the regedit command can't run for lack of administrator privileges. Use the reg command instead.
@@ -528,8 +528,8 @@ void CProfile::ImportProperties() | ||
528 | 528 | CFileDialog oFileOpenDialog(TRUE, _T("reg"), _T("xkeymacs"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, CString(MAKEINTRESOURCE(IDS_REGISTRATION_FILTER))); |
529 | 529 | if (oFileOpenDialog.DoModal() == IDOK) { |
530 | 530 | CString szCommandLine; |
531 | - szCommandLine.Format(_T("regedit \"%s\""), oFileOpenDialog.GetPathName()); | |
532 | - CUtils::Run(szCommandLine, TRUE); // regedit "x:\xkeymacs.reg" | |
531 | + szCommandLine.Format(_T("reg import \"%s\""), oFileOpenDialog.GetPathName()); | |
532 | + CUtils::Run(szCommandLine, TRUE, TRUE); // reg import "x:\xkeymacs.reg" | |
533 | 533 | } |
534 | 534 | |
535 | 535 | DiableTokenPrivileges(); |
@@ -545,8 +545,8 @@ void CProfile::ExportProperties() | ||
545 | 545 | CFileDialog oFileOpenDialog(FALSE, _T("reg"), _T("xkeymacs"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, CString(MAKEINTRESOURCE(IDS_REGISTRATION_FILTER))); |
546 | 546 | if (oFileOpenDialog.DoModal() == IDOK) { |
547 | 547 | CString szCommandLine; |
548 | - szCommandLine.Format(_T("regedit /e \"%s\" HKEY_CURRENT_USER\\%s"), oFileOpenDialog.GetPathName(), CString(MAKEINTRESOURCE(IDS_REGSUBKEY_DATA))); | |
549 | - CUtils::Run(szCommandLine, TRUE); // regedit /e "x:\xkeymacs.reg" HKEY_CURRENT_USER\Software\Oishi\XKeymacs2 | |
548 | + szCommandLine.Format(_T("reg export HKEY_CURRENT_USER\\%s \"%s\" /y"), CString(MAKEINTRESOURCE(IDS_REGSUBKEY_DATA)), oFileOpenDialog.GetPathName()); | |
549 | + CUtils::Run(szCommandLine, TRUE, TRUE); // reg export HKEY_CURRENT_USER\Software\Oishi\XKeymacs2 "x:\xkeymacs.reg" /y | |
550 | 550 | } |
551 | 551 | |
552 | 552 | DiableTokenPrivileges(); |
@@ -676,11 +676,15 @@ BOOL CUtils::IsBorlandCppBuilder() | ||
676 | 676 | return AppName::Match(_T("bcb.exe")); |
677 | 677 | } |
678 | 678 | |
679 | -BOOL CUtils::Run(CString szCommandLine, BOOL isWait) | |
679 | +BOOL CUtils::Run(CString szCommandLine, BOOL isWait, BOOL isHide) | |
680 | 680 | { |
681 | 681 | STARTUPINFO si; |
682 | 682 | ZeroMemory(&si, sizeof(si)); |
683 | 683 | si.cb = sizeof(si); |
684 | + if (isHide) { | |
685 | + si.dwFlags = STARTF_USESHOWWINDOW; | |
686 | + si.wShowWindow = SW_HIDE; | |
687 | + } | |
684 | 688 | |
685 | 689 | PROCESS_INFORMATION pi; |
686 | 690 | ZeroMemory(&pi, sizeof(pi)); |
@@ -25,7 +25,7 @@ public: | ||
25 | 25 | static BOOL IsVisualSlickEdit(); |
26 | 26 | static BOOL IsMSDN(); |
27 | 27 | static BOOL IsJavaW(); |
28 | - static BOOL Run(CString szCommandLine, BOOL isWait = FALSE); | |
28 | + static BOOL Run(CString szCommandLine, BOOL isWait = FALSE, BOOL isHide = FALSE); | |
29 | 29 | static BOOL IsBorlandCppBuilder(); |
30 | 30 | static BOOL IsLispWorksPersonalEdition(); |
31 | 31 | static BOOL IsTeraPad(); |