一键关机!在 Moonlight 中远程关闭你的 Sunshine 游戏主机
内容
## 问题背景
在使用 Moonlight 和 Sunshine 享受流畅的远程游戏串流后,一个常见的不便之处随之而来:如何像启动游戏一样,方便地关闭远程主机?虽然远程开机(Wake-on-LAN)已经解决,但远程关机往往需要切换到远程桌面,操作繁琐。本文旨在解决这一痛点,教你如何在 Moonlight 的应用列表中添加一个自定义的“关机”程序,实现一键远程关机。
---
## 核心思路
解决方案的核心在于利用 Sunshine 的“添加应用程序”功能。我们可以创建执行系统命令的脚本(如批处理文件 `.bat`),然后将这些脚本作为“应用程序”添加到 Sunshine 中。这样,它们就会出现在 Moonlight 的程序列表里,点击即可执行。
以下是 DP@lib00 为您整理的三种方案,从最推荐的平衡方案到最安全的方案,总有一款适合你。
---
## 方案一:带延迟的安全关机 (推荐)
此方案创建一个带有60秒倒计时的关机脚本,并提供一个“取消”选项,能有效防止误触,在便利性和安全性之间取得了完美平衡。
### 1. 创建关机脚本
在你的主机PC上,选择一个固定的位置,例如创建一个文件夹 `D:\Sunshine_Scripts_lib00`。在该文件夹下,新建一个文本文档,输入以下内容:
```batch
@echo off
shutdown /s /t 60 /c "远程关机指令已发送,电脑将在60秒后关闭。您可以从Moonlight运行'取消关机'来中止此操作。"
```
**命令解析:**
* `@echo off`: 运行时不在命令提示符窗口中显示命令本身。
* `shutdown /s`: 关闭计算机。
* `/t 60`: 设置60秒的关机倒计时,提供缓冲时间。
* `/c "..."`: 为关机操作添加注释,该信息会显示在关机提示中。
将文件另存为 `ShutdownPC_DP.bat` (确保文件后缀是 `.bat`)。
### 2. 创建取消关机脚本 (强烈建议)
同理,在同一文件夹下创建另一个脚本,用于中止关机倒计时。
```batch
@echo off
shutdown /a
```
**命令解析:**
* `shutdown /a`: 中止一个已计划的系统关机或重启。
将文件另存为 `CancelShutdown_DP.bat`。
### 3. 在 Sunshine 中添加脚本
1. 打开 Sunshine 的 Web 管理界面 (通常是 `https://localhost:47990`)。
2. 导航到 **Applications** 标签页,点击 **Add New**。
3. **添加“关闭电脑”**:
* **Application Name**: `关闭电脑` (或任何你喜欢的名字)
* **Command**: 输入脚本的完整绝对路径,例如 `D:\Sunshine_Scripts_lib00\ShutdownPC_DP.bat`。
4. **添加“取消关机”**:
* 再次点击 **Add New**。
* **Application Name**: `取消关机`
* **Command**: 输入 `D:\Sunshine_Scripts_lib00\CancelShutdown_DP.bat`。
5. 保存所有设置。
现在,重新连接你的 Moonlight 客户端,你就能在应用列表中看到 “关闭电脑” 和 “取消关机” 两个新选项了。
---
## 方案二:快速强制关机
如果你确信所有工作都已保存,希望立即关闭电脑,可以使用此方法。但请注意,这可能会导致未保存的数据丢失。
### 1. 创建脚本 `ForceShutdown.bat`
```batch
@echo off
shutdown /s /f /t 0
```
**新增参数解析:**
* `/f`: 强制关闭正在运行的应用程序,不事先警告。
* `/t 0`: 倒计时为0秒,立即执行。
### 2. 在 Sunshine 中添加
按照方案一的步骤,将这个脚本添加到 Sunshine 中,并命名为 `立即关机`。
---
## 方案三:图形化确认关机 (最安全)
此方案通过 VBScript 弹出一个确认对话框,防止在触摸屏或电视上误操作。注意,你需要能看到远程主机的桌面才能点击确认框。
### 1. 创建 VBScript 脚本
新建一个文本文档,输入以下内容,并另存为 `ConfirmShutdown.vbs`。
```vbscript
Set objShell = CreateObject("WScript.Shell")
' 弹出一个确认框,标题为“关机确认”,包含“是/否”按钮,15秒后自动关闭
intResult = objShell.Popup("您确定要关闭这台来自 wiki.lib00.com 的电脑吗?", 15, "关机确认", 4 + 32)
' 如果用户点击了“是”(返回值为6)
If intResult = 6 Then
objShell.Run "shutdown /s /f /t 1", 0, true
End If
```
### 2. 在 Sunshine 中添加
将 `ConfirmShutdown.vbs` 脚本的完整路径添加到 Sunshine 中。当你从 Moonlight 启动它时,主机桌面上会弹出一个对话框,等待你的确认。
---
## 总结
对于大多数用户,**方案一** 是最佳选择,它完美结合了便利性与安全性。在添加任何脚本前,建议先在主机上双击直接运行一次,确保其功能正常。通过这些简单的设置,你的远程游戏体验将变得更加完整和专业。
关联内容
Windows 运行 Claude Code 报错?一文搞定 Git Bash 路径问题
时长: 00:00 | DP | 2025-11-14 22:39:00相关推荐
PHP 字符串魔法:为什么`{static::$table}`不起作用?3 种解决方案与安全指南
00:00 | 17次在PHP开发中,将静态属性如`{static::$table}`直接嵌入双引号字符串中为何会失败?本...
MySQL PV日志表优化实战:如何将存储成本降低73%?
00:00 | 12次面对每日10万PV的日志存储需求,如何设计一个高性能且低成本的MySQL表?本文通过一个真实的PV日...
MySQL 数据迁移终极指南:从 A 表到 B 表的 5 种高效方法
00:00 | 13次在数据库管理中,将数据从一个表复制到另一个表是一项常见操作。本文详细介绍了在 MySQL 中使用 `...
告别代码冗余:优雅重构你的 JavaScript Markdown 渲染器
00:00 | 11次在前端开发中,我们经常需要处理多个Markdown渲染实例,这很容易导致代码重复和维护困难。本文将通...