mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-23 19:49:43 +01:00
Added runas admin to Context Menu
This commit is contained in:
@@ -84,7 +84,7 @@
|
||||
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
|
||||
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="8.0.0" />
|
||||
<PackageVersion Include="System.Text.Encoding.CodePages" Version="8.0.0" />
|
||||
<PackageVersion Include="System.Text.Json" Version="8.0.4" />
|
||||
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
|
||||
<PackageVersion Include="UnicodeInformation" Version="2.6.0" />
|
||||
<PackageVersion Include="UnitsNet" Version="5.56.0" />
|
||||
<PackageVersion Include="UTF.Unknown" Version="2.5.1" />
|
||||
@@ -100,4 +100,4 @@
|
||||
<PackageVersion Include="Microsoft.VariantAssignment.Client" Version="2.4.17140001" />
|
||||
<PackageVersion Include="Microsoft.VariantAssignment.Contract" Version="3.0.16990001" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -0,0 +1,100 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Resources;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.CmdPal.Ext.WindowsTerminal.Helpers;
|
||||
using Microsoft.CmdPal.Extensions;
|
||||
using Microsoft.CmdPal.Extensions.Helpers;
|
||||
using Windows.UI;
|
||||
|
||||
namespace Microsoft.CmdPal.Ext.WindowsTerminal.Commands;
|
||||
|
||||
internal sealed partial class LaunchProfileAsAdminCommand : InvokableCommand
|
||||
{
|
||||
private readonly string _id;
|
||||
private readonly string _profile;
|
||||
private readonly bool _openNewTab;
|
||||
private readonly bool _openQuake;
|
||||
|
||||
internal LaunchProfileAsAdminCommand(string id, string profile, bool openNewTab, bool openQuake)
|
||||
{
|
||||
this._id = id;
|
||||
this._profile = profile;
|
||||
this._openNewTab = openNewTab;
|
||||
this._openQuake = openQuake;
|
||||
|
||||
this.Name = "Launch Profile as Admin";
|
||||
this.Icon = new("\xE7EF");
|
||||
}
|
||||
|
||||
private void LaunchElevated(string id, string profile)
|
||||
{
|
||||
try
|
||||
{
|
||||
var path = "shell:AppsFolder\\" + id;
|
||||
var arguments = TerminalHelper.GetArguments(profile, _openNewTab, _openQuake);
|
||||
|
||||
var startInfo = new System.Diagnostics.ProcessStartInfo
|
||||
{
|
||||
FileName = path,
|
||||
Arguments = arguments,
|
||||
UseShellExecute = true,
|
||||
Verb = "runas",
|
||||
};
|
||||
|
||||
System.Diagnostics.Process.Start(startInfo);
|
||||
}
|
||||
#pragma warning disable IDE0059, CS0168, SA1005
|
||||
catch (Exception ex)
|
||||
{
|
||||
// TODO - We need to figure out some logging
|
||||
//var name = "Plugin: " + Resources.plugin_name;
|
||||
//var message = Resources.run_terminal_failed;
|
||||
//Log.Exception("Failed to open Windows Terminal", ex, GetType());
|
||||
//_context.API.ShowMsg(name, message, string.Empty);
|
||||
}
|
||||
}
|
||||
#pragma warning restore IDE0059, CS0168, SA1005
|
||||
|
||||
private void Launch(string id, string profile)
|
||||
{
|
||||
var appManager = new ApplicationActivationManager();
|
||||
const ActivateOptions noFlags = ActivateOptions.None;
|
||||
var queryArguments = TerminalHelper.GetArguments(profile, _openNewTab, _openQuake);
|
||||
try
|
||||
{
|
||||
appManager.ActivateApplication(id, queryArguments, noFlags, out var unusedPid);
|
||||
}
|
||||
#pragma warning disable IDE0059, CS0168
|
||||
catch (Exception ex)
|
||||
{
|
||||
// TODO: We need to figure out some logging
|
||||
// var name = "Plugin: " + Resources.plugin_name;
|
||||
// var message = Resources.run_terminal_failed;
|
||||
// Log.Exception("Failed to open Windows Terminal", ex, GetType());
|
||||
// _context.API.ShowMsg(name, message, string.Empty);
|
||||
}
|
||||
}
|
||||
#pragma warning restore IDE0059, CS0168
|
||||
|
||||
public override CommandResult Invoke()
|
||||
{
|
||||
try
|
||||
{
|
||||
LaunchElevated(_id, _profile);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// TODO: We need to figure out some logging
|
||||
}
|
||||
|
||||
return CommandResult.KeepOpen();
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,9 @@ internal sealed partial class ProfilesListPage : ListPage
|
||||
{
|
||||
Title = profile.Name,
|
||||
Subtitle = profile.Terminal.DisplayName,
|
||||
MoreCommands = [
|
||||
new CommandContextItem(new LaunchProfileAsAdminCommand(profile.Terminal.AppUserModelId, profile.Name, true, false)),
|
||||
],
|
||||
|
||||
// Icon = () => GetLogo(profile.Terminal),
|
||||
// Action = _ =>
|
||||
|
||||
Reference in New Issue
Block a user