AHK 如何在管理员身份运行时,以普通用户权限 Run 一个程序

我用这个 AutoHotKey 脚本实现 win+s 打开 sublime:
#S::Run, C:\Apps\Coding\Sublime\sublime_text.exe

但是现在遇到的问题是:

  • 不以管理员身份运行脚本,则无法在任务管理器等高权限的界面触发
  • 以管理员身份运行脚本,则无法拖动文件进入 sublime 中

查询一番发现,因为高权限运行的程序,拒绝了低权限的文件拖动,把 sublime 换成了 chrome 发现有一样的问题,这就难受了呀。

所以我需要做的事情是:以管理员身份启动ahk脚本,脚本中以普通用户权限启动其他程序。

官方文档写道:
以管理员权限运行脚本会导致脚本启动的所有程序也以管理员权限运行。
变量和表达式 | AutoHotkey

尝试改用 RunAs 也确实可以,但是需要指定运行用户,并把账号对应密码写在脚本里,我在找是否有其他方式。

后面我尝试别的思路时发现,HotkeyP 是可以选择是否以管理员身份运行目标应用,即使 HotkeyP 本身已经是管理员,如图。

虽然用 HotkeyP 已经能达到我的这个目的,但是它的 自由度 和 组合键丰富程度 不像 AHK 那么高,我还是希望用 AHK 解决。

总结一下需求是:

  1. 使用 AHK 定义一个快捷键 用于启动 sublime
  2. 即使处于管理员权限的界面,也能正常触发启动
  3. 被启动 sublime,可以正常地拖入文件进行编辑

请问如何优雅地实现这个需求?

https://www.autohotkey.com/boards/viewtopic.php?t=45082

Run_AsUser(Program) {
    ComObjCreate("Shell.Application")
    .Windows.FindWindowSW(0, 0, 0x08, 0, 0x01)  
    .Document.Application.ShellExecute(Program) 
}
2 Likes

意思是不是不用弹出管理员权限的那个弹窗??

不是的,楼上 @loli 的回答是我想要的效果,就是以普通用户权限去运行目标程序

收藏了,还有没有其他好用的ahk函数啊