更优雅的使用虚拟机
本文最后更新于 296 天前,其中的信息可能已经有所发展或是发生改变。

你是否有想过单独隔离一些你并不信任的软件到虚拟机中,但又因为感觉虚拟机来回切换页面不方便 / 只有一个显示器放不下两个系统的桌面而苦恼?我前段时间研究了下发现有一个解决方案还算完美,能让在虚拟机内的软件在实体机系统内有着类原生的体验。

Microsoft RemoteApp 是微软在 Windows Server 服务器系统上推出的解决方案,允许用户跨设备、跨操作系统的使用 Windows 软件,应用程序的本体和缓存目录全部存在于服务器上,但是却能做到类原生应用的体验。看到这里也不难看出这是一套企业解决方案,微软也确实没把这套解决方案下放到 PC 操作系统上,而在 Windows Server 上配置 RA 需要进行比较复杂的域配置,但是由于其是 Based on RDP 的,并不是什么复杂的完全闭源的私有协议,所以我们可以利用一款开源的软件 RemoteApp Tool 实现这一体验。

操作

创建虚拟机

这一步应该无需太多解释,创建一个虚拟机即可,如果只是放几个聊天软件啥的,内存 8GB 就够了,建议的 Windows 版本为 Windows 10 LTSC 或 Windows 10 Pro 22H2 (Edu/Workstation 也可以)。

用了两个多月的虚拟机内系统

配置虚拟机系统的时候建议断网,创建本地帐号;不要使用 Windows 11 否则你会变的不幸

覆盖 RDP 配置以支持多用户登录

(可选,若只自己使用则不需要)

前往 Github 下载 stascorp/rdpwrap 的最新版本,解压缩后以管理员权限运行 install.bat , 这个脚本会在配置完成后自动重启 RDP,如果 Hyper-V 的虚拟机连接被断开,重新开启即可。

随后以管理员权限开启 RDPConf.exe,如果此处全绿的话进行下一步,如果不是的话说明 rdpwrap 默认的配置文件无法破解掉当前系统版本的 DLL 文件,需要升级 rdpwrap.ini 文件:

打开 sebaxakerhtc/rdpwrap.ini 下载最新版本,覆盖 rdpwrap 根目录的 rdpwrap.ini,然后重新管理员权限运行 RDPConf.exe

RDPConf.exe 全绿

配置 FRP

因为虚拟机并没有取得独立IP,所以需要在你家的 NAS 或 PC 上开启一个 FRP 服务端 (FRPS),在 https://github.com/fatedier/frp 下载配置文件后分别解压到虚拟机和服务端,编辑配置文件 frps.ini ,保存后启动。

[common]
bind_addr = 0.0.0.0
bind_port = 7000

# Virtual host configuration
# vhost_http_port = 8080
# vhost_https_port = 8443
# vhost_udp_port = 13389 

//如果用NAS的话可以直接用3389端口,这里用13389是防止和PC冲突,保存配置文件时这行注释需要删掉

# Dashboard configuration
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = <id>
dashboard_pwd = <passwd>

# logs
log_file = ./frps.log
log_level = info
log_max_days = 3

# auth token
token = <auth_token>

max_pool_count = 5
max_ports_per_client = 0
authentication_timeout = 900
tcp_mux = true

然后在虚拟机内编辑 frpc.ini,如下,保存后启动

[common]
server_addr = <NAS或PC的IP>
server_port = 7000
token = <auth_token>

pool_count = 5
tcp_mux = true
user = your_name
login_fail_exit = true
protocol = tcp
dns_server = 8.8.8.8

[rdp]
type = udp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 13389

[rdp_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 13389

配置 RemoteApp

管理员权限打开 RemoteApp Tool,左下角选择程序的主文件(非快捷方式),例如我这里添加了 Edge 作为演示的软件 C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,然后单击 RemoteApp 列表的 Edge 图标,点击右下角 Create Client Connection,在地址那里全部填写 FRPS 服务端的设备 IP 即可,比如我的服务器在内网中是 10.10.1.1,映射的 RDP 端口 13389,然后单击 Create 保存配置文件,把配置文件复制到实体机;配置文件内容如下图所示,双击即可运行。

至此你就可以正常的使用 RemoteApp 了,但是还有两个问题,一个是由于系统限制,状态栏(不是任务栏,而是在任务栏右侧显示的那些小图标)上的图标无法点开,一个是 FRP 没有后台运行也没有开机自启,解决方法如下。

完善打开方式

先说任务栏图标,这个无解,但是你可以把远程应用 RDP 配置文件命名成一个你记得住的名字,然后用 ListaryFluent Search 这样的快捷搜索软件设置好快捷点,输入软件名直接打开,效果如下。

我为了让搜索时候显示图标,设置了一个图标为软件 icon 的快捷方式指向配置文件,效果如左图,如果你懒得设置的话,又是右图那种效果。实际体验都一样,毕竟你又不天天盯着搜索页面看;任务栏上和状态栏里显示的图标是正常的,无需单独设置。

FRP 开机自启

新建一个 vbs 文件,命名为 frp.vbs,内容如下(盘符为小写,替换成你自己的 frp 文件位置),然后把这个文件复制到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 即可;这个是 frpc (虚拟机内) 的,如果是 frps (NAS或PC上的服务端),把配置文件中的 frpc 替换为 frps 即可(注意 exe 和 ini 都要换)。

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "c:\FILES\frp_0.45.0_windows_amd64\frpc.exe -c c:\FILES\frp_0.45.0_windows_amd64\frpc.ini",0

一些建议

  • 建议把虚拟机的 Windows Explorer (文件资源管理器) 和 RemoteApp Tools 面板,以及你常用的浏览器、代理软件都制作成 Remote App,方便管理虚拟机内的资源。
    其中前两者路径一般为
    C:\Windows\explorer.exe
    C:\Program Files (x86)\RemoteApp Tool\RemoteApp Tool.exe

结语

我自己用这套方案已经两个月了,平时用起来很舒服,几乎就是原生应用的体验,最近终于有时间把教程写出来了,希望大家可以保护好自己的隐私。

如果你在操作过程中遇到了什么问题的话,欢迎写 Email 给我 ( [email protected] ),或直接去使用到的几个开源项目的 Repo 提 issue。

本期使用到的开源项目列表

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇