From ffd22d78c208992d4f6c632042491db7ee464d75 Mon Sep 17 00:00:00 2001 From: Michael Mouawad Date: Sun, 22 Aug 2021 13:36:01 +0300 Subject: [PATCH] add run as administration when holding ctrl and shift to Program and Explorer plugins --- Flow.Launcher/MainWindow.xaml | 1 + .../Search/ResultManager.cs | 23 ++++++++++++++++++- .../Programs/Win32.cs | 14 ++++++++--- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index fcc3af5c5..83cc016bb 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -46,6 +46,7 @@ + diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs index 09315d9dd..7e12fea13 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs @@ -1,8 +1,10 @@ using Flow.Launcher.Infrastructure; using Flow.Launcher.Plugin.SharedCommands; using System; +using System.Diagnostics; using System.IO; using System.Linq; +using System.Threading.Tasks; using System.Windows; namespace Flow.Launcher.Plugin.Explorer.Search @@ -127,7 +129,26 @@ namespace Flow.Launcher.Plugin.Explorer.Search { try { - if (c.SpecialKeyState.CtrlPressed) + if (File.Exists(filePath) && c.SpecialKeyState.CtrlPressed && c.SpecialKeyState.ShiftPressed) + { + Task.Run(() => + { + try + { + Process.Start(new ProcessStartInfo + { + FileName = filePath, + UseShellExecute = true, + Verb = "runas", + }); + } + catch (Exception e) + { + MessageBox.Show(e.Message, "Could not start " + filePath); + } + }); + } + else if (c.SpecialKeyState.CtrlPressed) { FilesFolders.OpenContainingFolder(filePath); } diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs index 931cfacc1..9d7530856 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs @@ -102,16 +102,24 @@ namespace Flow.Launcher.Plugin.Program.Programs Score = matchResult.Score, TitleHighlightData = matchResult.MatchData, ContextData = this, - Action = _ => + Action = c => { + var runAsAdmin = ( + c.SpecialKeyState.CtrlPressed && + c.SpecialKeyState.ShiftPressed && + !c.SpecialKeyState.AltPressed && + !c.SpecialKeyState.WinPressed + ); + var info = new ProcessStartInfo { FileName = LnkResolvedPath ?? FullPath, WorkingDirectory = ParentDirectory, - UseShellExecute = true + UseShellExecute = true, + Verb = runAsAdmin ? "runas" : null }; - Main.StartProcess(Process.Start, info); + Task.Run(() => Main.StartProcess(Process.Start, info)); return true; }