Windows 如何从提升的AHK脚本启动未提升的exe?

Windows 如何从提升的AHK脚本启动未提升的exe?,windows,windows-10,autohotkey,Windows,Windows 10,Autohotkey,如果Spotify没有运行,我正试图通过按下键盘上的播放/暂停按钮来启动它 我有这个 Media_Play_Pause:: Process, Exist, spotify.exe if ErrorLevel { Send {Media_Play_Pause} } else { Run, Spotify } return 这是可行的,但因为我的ahk是以管理员的身份运行的,所以Spotify也以管理员的身份运行。 为什么这么糟糕?因为提升的Spotify不会在任务栏预览中显示媒体

如果Spotify没有运行,我正试图通过按下键盘上的播放/暂停按钮来启动它

我有这个

Media_Play_Pause::
Process, Exist, spotify.exe
if ErrorLevel
{
    Send {Media_Play_Pause}
}
else
{
    Run, Spotify
}
return
这是可行的,但因为我的ahk是以管理员的身份运行的,所以Spotify也以管理员的身份运行。 为什么这么糟糕?因为提升的Spotify不会在任务栏预览中显示媒体控制按钮,它会在任务栏上创建一个与固定的Spotify图标分离的新图标

有没有办法以普通用户而不是管理员的身份运行Spotify?

您正在寻找的

例如:

RunAs, UserName, UserPassword
Run, Spotify
应以您指定的用户身份运行Spotify,您可以将其指定为您自己的用户配置文件[您需要使用正确的凭据替换用户名和用户密码,才能使其正常工作]

如果您不确定您的用户名是什么,可以在命令提示符下使用
net user
命令列出所有用户名

以下是您的代码在进行此更改时的外观:

Media_Play_Pause::
Process, Exist, spotify.exe
if ErrorLevel
{
    Send {Media_Play_Pause}
}
else
{
    RunAs, UserName, UserPassword ;Change these to be the correct values!
    Run, Spotify
}
return

让Shell为您运行程序。
一个实现,一个实现。
没有任何更好的意见,这两个似乎都适合我

脚本中任一函数的用法如下:

Media_Play_Pause::
    Process, Exist, spotify.exe
    if (ErrorLevel)
        SendInput, {Media_Play_Pause}
    else
        ShellRun("Spotify") ; I don't have Spofify, so I didn't try using this short name for it. If it doesn't work, try to specify the full path of the exe
return

; copy paste the function here

如果这解决了您的问题,请将其标记为已接受的答案。如果没有,请让我知道我可以做些什么来改进它。这不也只是作为管理员运行程序吗?因为我已经登录,并且只使用一个管理员帐户。我想我应该澄清一下我的意思。在Windows计算机上,有一个单独的“管理员”帐户,默认情况下,该帐户在用户计算机上被禁用。换句话说,即使您在计算机上只创建了一个用户帐户,您在计算机上仍将拥有此默认管理员帐户。您可以通过打开命令提示符并使用命令
net user
(该命令列出了计算机上的所有用户帐户)来验证这一点。此外,如果您通过将用户帐户链接到Windows帐户(这是最常见的方式)在计算机上创建了用户帐户,则您的用户名(您需要将其替换为上面的AHK脚本)可能与您登录计算机时显示的名称不同。因此,如果您的计算机上只有一个用户帐户,您可以在
net user
命令创建的用户列表中轻松识别它。如果您需要更多说明、来源等,请随时通知我@DD3R@DD3R更具体地说,addr在回答您的问题时,RunAs命令会更改执行操作的用户。如您所述,如果AHK脚本以管理员身份运行,则所述用户实际上是默认的“管理员”帐户。但是,为了“取消关联”Spotify发布后,您需要将运行它的用户更改为您在计算机上创建的标准用户帐户。是的!这很有效,谢谢。尝试了第一个版本,它完全符合我的需要。