我是 Windows 7 管理员组的成员。我需要foo.exe
从 Cmd 或 Powershell 运行。exe 文件需要提升权限才能运行,但其清单中未指定提升权限。
通常我必须start .
打开资源管理器,右键单击 exe 并选择以管理员身份运行。
有没有更简单的方法?我不会关闭 UAC,我不想让密码被记住或避免提示。我只是想避免启动 Explorer 窗口。
我是管理员组的成员。我不想以其他用户身份运行,我只想看到我自己在 Explorer 中单击右键时看到的无密码 UAC 提示,但不需要打开 Explorer、运行第三方工具、禁用 UAC、从脚本执行相同操作或记住凭据。
我只想调用通常的 UAC 提示,无需中间步骤。
为了澄清起见,我想要以下序列:
Windows 7,UAC 开启,我在管理员组,UAC 提示设置为回答是/否。
打开非提升的命令提示符并导航到深层文件夹并执行其他任务。
我运行“elevate-command-sequence foo.exe”,UAC 提示打开的方式与我在 Explorer 中右键单击时打开的方式完全相同。foo.exe 的当前目录设置为我所在的深层文件夹。
我想知道elevate-command-sequence
在 cmd 或 powershell 中是否存在这样的功能。
答案1
如果命令提示符本身未在提升状态下启动,则它无法本地启动提升的应用程序。这很糟糕,但这只是 Windows 行为的一部分。
如果你想解决这个问题,你必须使用第三方工具来为你启动提升的程序。通过快速谷歌搜索,我发现电力需求侧管理,这将允许您从非提升的命令提示符(当然是在 UAC 弹出之后)以提升的状态运行程序
c:\>ele foo.exe
我确信还有一百万个程序可以做到这一点,哎呀,我可以在这个答案中用 C# 编写一个。
namespace Sandbox_Console
{
public class Program
{
private static void Main(string[] args)
{
Process newProcess = new Process();
newProcess.StartInfo.Verb = "runas";
newProcess.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
newProcess.StartInfo.FileName = args[0];
newProcess.StartInfo.Arguments = String.Join(" ", args, 1, args.Length - 1);
newProcess.Start();
}
}
}
现在代码非常脆弱,它现在无法处理参数中的空格之类的东西,但添加起来并不困难。
答案2
也许这个组策略设置更改可能会对您有所帮助:
开始-->
run
-->gpedit.msc
导航
Computer Configuration --> Policies-->Windows Settings-->Security Settings -->Local Policies-->Security Options
3.改变behavior of elevation prompt for administrator
(你可以按照你想要的方式导出)
重新启动计算机以使更改生效
答案3
这个问题在这里得到合理的回答:https://superuser.com/a/420317/98646
powershell Start-Process cmd.exe -Verb RunAs
当然,cmd.exe只是一个占位符。