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;
}