You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

家用网络下,如何用AutoHotKey向另一台Win10设备发送交互式指令?

解决跨PC调用交互式AutoHotkey脚本的问题

我完全懂你遇到的麻烦——WMI、WinRM、schtasks这些工具默认都是在后台非交互式会话里跑任务,根本没法触发需要显示界面的脚本。好在针对你这种同一微软账户登录的私有网络环境,有个靠谱的方案:用PsExec(Sysinternals工具集里的一员)配合它的交互式参数就能搞定。

为什么PsExec能解决问题?

PsExec的-i参数允许你指定目标PC上的用户会话ID,直接在当前登录用户的桌面会话里启动程序,完美匹配你需要的交互式场景。而且两台机器用同一个微软账户,权限配置起来也相对省心。

具体操作步骤

1. 准备PsExec工具

  • 下载PsExec(属于Sysinternals PsTools套件),把psexec.exe放在PC1上和你的AHK脚本同目录,或者加到系统PATH里方便随时调用。
  • 第一次运行PsExec会弹出许可协议,记得在PC1和PC2上各手动运行一次psexec /accepteula跳过弹窗,避免后续脚本执行被卡住。

2. 配置PC2的环境

  • 确保PC2的Admin$共享是开启的(默认是开启的,如果被关闭了,运行net share Admin$就能开启)。
  • 检查PC2的防火墙,允许SMB(445端口)和远程管理相关端口(PsExec会用到135端口和随机高位端口),也可以先临时关闭防火墙测试,确认可行后再配置规则。

3. 编写PC1上的AHK脚本

下面是完整的示例脚本,它会先获取PC2当前登录用户的会话ID,再调用PsExec在该会话里启动你的交互式脚本:

; 替换成你的PC2主机名或IP
TargetPC := "PC2"
; 替换成PC2上要运行的脚本实际路径
TargetScript := "C:\Scripts\your_interactive_script.ahk"

; 第一步:获取PC2当前活跃用户的会话ID
RunWait, %ComSpec% /c quser /server:%TargetPC% > "%A_Temp%\session_info.txt",, Hide
FileRead, SessionOutput, %A_Temp%\session_info.txt
; 解析出"Active"状态对应的会话ID
RegExMatch(SessionOutput, "O)\s+(\d+)\s+Active", SessionMatch)
; 解析失败时默认用会话ID1(单用户登录时通常是1)
SessionID := SessionMatch1 ? SessionMatch1 : "1"

; 第二步:用PsExec触发交互式脚本
; -i 指定会话ID,-h 确保高权限运行(可选,根据脚本需求调整)
Run, psexec \\%TargetPC% -i %SessionID% -h "%TargetScript%"

关键细节提示

  • 如果你的脚本依赖AutoHotkey运行环境,确保PC2上已经安装了对应版本的AHK;或者把脚本编译成独立EXE文件,这样不需要依赖AHK环境。
  • 要是遇到权限问题,在PsExec命令里加上-u和-p参数,指定你的微软账户凭据(格式:-u your_microsoft_email@outlook.com -p your_password),不过同一账户登录的话通常不需要。
  • 测试时可以先手动在PC1的命令行里运行PsExec命令,确认能在PC2上弹出脚本界面,再集成到AHK里。

替代方案(复杂版)

如果不想用第三方工具,你可以通过Windows API的CreateProcessAsUser远程创建进程,但这个方法需要远程获取目标用户的令牌,涉及更多权限和API调用,实现起来远不如PsExec简单,所以优先推荐上面的方案。

内容的提问来源于stack exchange,提问作者fat_flying_pigs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:05:18