From 25bc02f33283c77bc7e043c93e127ad63c2ed42a Mon Sep 17 00:00:00 2001 From: CharlieHess <ifightnoman@gmail.com> Date: Thu, 26 Jan 2017 14:15:59 -0800 Subject: [PATCH] Don't append "%1" in the Run registry key. It's only necessary for the protocol launch path. --- atom/browser/browser_win.cc | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/atom/browser/browser_win.cc b/atom/browser/browser_win.cc index 93565de54765..5daf40220e67 100644 --- a/atom/browser/browser_win.cc +++ b/atom/browser/browser_win.cc @@ -43,7 +43,9 @@ BOOL CALLBACK WindowsEnumerationHandler(HWND hwnd, LPARAM param) { return TRUE; } -bool ReadAppCommandLine(mate::Arguments* args, base::string16* exe) { +bool ReadAppCommandLine(mate::Arguments* args, + base::string16* exe, + bool includeOriginalArg) { // Executable Path if (!args->GetNext(exe)) { base::FilePath path; @@ -56,12 +58,19 @@ bool ReadAppCommandLine(mate::Arguments* args, base::string16* exe) { // Read in optional args arg std::vector<base::string16> launch_args; - if (args->GetNext(&launch_args) && !launch_args.empty()) - *exe = base::StringPrintf(L"\"%s\" %s \"%%1\"", + if (args->GetNext(&launch_args) && !launch_args.empty()) { + base::string16 formatString = includeOriginalArg ? + L"\"%s\" %s \"%%1\"" : + L"\"%s\" %s"; + *exe = base::StringPrintf(formatString.c_str(), exe->c_str(), base::JoinString(launch_args, L" ").c_str()); - else - *exe = base::StringPrintf(L"\"%s\" \"%%1\"", exe->c_str()); + } else { + base::string16 formatString = includeOriginalArg ? + L"\"%s\" \"%%1\"" : + L"\"%s\""; + *exe = base::StringPrintf(formatString.c_str(), exe->c_str()); + } return true; } @@ -155,7 +164,7 @@ bool Browser::RemoveAsDefaultProtocolClient(const std::string& protocol, return true; base::string16 exe; - if (!ReadAppCommandLine(args, &exe)) + if (!ReadAppCommandLine(args, &exe, true)) return false; if (keyVal == exe) { @@ -189,7 +198,7 @@ bool Browser::SetAsDefaultProtocolClient(const std::string& protocol, return false; base::string16 exe; - if (!ReadAppCommandLine(args, &exe)) + if (!ReadAppCommandLine(args, &exe, true)) return false; // Main Registry Key @@ -219,7 +228,7 @@ bool Browser::IsDefaultProtocolClient(const std::string& protocol, return false; base::string16 exe; - if (!ReadAppCommandLine(args, &exe)) + if (!ReadAppCommandLine(args, &exe, true)) return false; // Main Registry Key @@ -259,7 +268,7 @@ void Browser::SetLoginItemSettings(LoginItemSettings settings, if (settings.open_at_login) { base::string16 exe; - if (!ReadAppCommandLine(args, &exe)) return; + if (!ReadAppCommandLine(args, &exe, false)) return; key.WriteValue(GetAppUserModelID(), exe.c_str()); } else { @@ -276,7 +285,7 @@ Browser::LoginItemSettings Browser::GetLoginItemSettings( if (!FAILED(key.ReadValue(GetAppUserModelID(), &keyVal))) { base::string16 exe; - if (ReadAppCommandLine(args, &exe)) { + if (ReadAppCommandLine(args, &exe, false)) { settings.open_at_login = keyVal == exe; } }