一键关机!在 Moonlight 中远程关闭你的 Sunshine 游戏主机

发布时间: 2025-12-16
作者: DP
浏览数: 8 次
分类: Windows
内容
## 问题背景 在使用 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 启动它时,主机桌面上会弹出一个对话框,等待你的确认。 --- ## 总结 对于大多数用户,**方案一** 是最佳选择,它完美结合了便利性与安全性。在添加任何脚本前,建议先在主机上双击直接运行一次,确保其功能正常。通过这些简单的设置,你的远程游戏体验将变得更加完整和专业。
相关推荐
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渲染实例,这很容易导致代码重复和维护困难。本文将通...