为何通过SSH在Windows虚拟机中打开Jar文件会启动隐身浏览器?
解决SSH启动Jar时浏览器触发隐身模式的问题
问题根源
Windows Server的SSH会话默认是无桌面交互的后台会话,不会加载当前用户的浏览器配置文件(比如Chrome的User Data目录)。浏览器检测到无有效用户配置时,会自动启用隐身/隐私模式。
可行解决方案
1. 强制指定浏览器配置文件路径
如果Jar内调用的是Chrome这类可指定配置的浏览器,修改启动参数绑定用户配置目录:
- 若能修改Jar代码,在调用浏览器的逻辑里添加参数:
--user-data-dir="C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data" - 无法修改Jar时,在SSH会话中先设置用户环境变量再启动Jar:
set USERPROFILE=C:\Users\你的用户名 java -jar name.jar
2. 启用带桌面的SSH会话
Windows Server 2019及以上版本支持X11转发,启动SSH时添加-X参数(需先在服务器端开启X11转发功能):
ssh -X 你的用户名@服务器IP
在该会话内执行java -jar name.jar,会话会加载用户桌面环境配置,浏览器将正常启动。
3. 将Jar注册为Windows服务
如果需要长期后台运行,把Jar注册为Windows服务,服务会继承指定用户的桌面权限:
- 使用
nssm工具完成注册:
服务运行时会加载用户配置,不会触发浏览器隐身模式。nssm install JarService "C:\Program Files\Java\jdk版本号\bin\java.exe" nssm set JarService Arguments "-jar C:\你的Jar路径\name.jar" nssm set JarService DisplayName "Jar运行服务" nssm start JarService
内容的提问来源于stack exchange,提问作者Mihai Ghilenschi
相关产品推荐
相关产品推荐

