我遇到的winapps问题&解决方案

我遇到的winapps问题&解决方案

都是我折腾winapps时遇到的问题,费了三整天才慢慢解决,故分享出来让大家少踩坑。

1. 1.RDP花费的连接时间太长,导致脚本超时

1.1 特点

运行50秒才启动

$ xfreerdp3 /u:"Administrator" /p:"1" /v:192.168.122.122 /cert:tofu
[08:48:09:871] [26120:0000660b] [WARN][com.freerdp.client.x11] - [load_map_from_xkbfile]:     : keycode: 0x08 -> no RDP scancode found
[08:48:09:871] [26120:0000660b] [WARN][com.freerdp.client.x11] - [load_map_from_xkbfile]: ZEHA: keycode: 0x5D -> no RDP scancode found
[08:48:09:893] [26120:0000660b] [WARN][com.freerdp.crypto] - [verify_cb]: Certificate verification failure 'self-signed certificate (18)' at stack position 0
[08:48:09:893] [26120:0000660b] [WARN][com.freerdp.crypto] - [verify_cb]: CN = DESKTOP-G8N9MT9
[08:48:32:930] [26120:0000660b] [ERROR][com.winpr.sspi.Kerberos] - [kerberos_AcquireCredentialsHandleA]: krb5glue_get_init_creds (Cannot contact any KDC for realm 'ATHENA.MIT.EDU' [-1765328228])
[08:48:55:956] [26120:0000660b] [ERROR][com.winpr.sspi.Kerberos] - [kerberos_AcquireCredentialsHandleA]: krb5glue_get_init_creds (Cannot contact any KDC for realm 'ATHENA.MIT.EDU' [-1765328228])
[08:48:55:967] [26120:0000660b] [WARN][com.freerdp.core.connection] - [rdp_client_connect_auto_detect]: expected messageChannelId=1008, got 1003
[08:48:55:967] [26120:0000660b] [WARN][com.freerdp.core.license] - [license_read_binary_blob_data]: license binary blob::type BB_ERROR_BLOB, length=0, skipping.
[08:48:55:992] [26120:0000660b] [WARN][com.freerdp.core.connection] - [rdp_client_connect_auto_detect]: expected messageChannelId=1008, got 1003
[08:48:55:999] [26120:0000660b] [INFO][com.freerdp.gdi] - [gdi_init_ex]: Local framebuffer format  PIXEL_FORMAT_BGRX32
[08:48:55:999] [26120:0000660b] [INFO][com.freerdp.gdi] - [gdi_init_ex]: Remote framebuffer format PIXEL_FORMAT_BGRA32
[08:48:55:000] [26120:0000660b] [INFO][com.freerdp.channels.rdpsnd.client] - [rdpsnd_load_device_plugin]: [static] Loaded fake backend for rdpsnd
[08:48:55:000] [26120:0000660b] [INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading Dynamic Virtual Channel ainput
[08:48:55:000] [26120:0000660b] [INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading Dynamic Virtual Channel rdpgfx
[08:48:55:001] [26120:0000660b] [INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading Dynamic Virtual Channel disp
[08:48:55:001] [26120:0000660b] [INFO][com.freerdp.channels.drdynvc.client] - [dvcman_load_addin]: Loading Dynamic Virtual Channel rdpsnd
[08:48:55:123] [26120:000066fe] [INFO][com.freerdp.channels.rdpsnd.client] - [rdpsnd_load_device_plugin]: [dynamic] Loaded fake backend for rdpsnd
[08:48:56:947] [26120:000066fe] [WARN][com.freerdp.channels.drdynvc.client] - [check_open_close_receive]: {Microsoft::Windows::RDS::DisplayControl:9} OnOpen=(nil), OnClose=0x7f02c8b5ecc0
[08:48:56:965] [26120:000066fe] [INFO][com.freerdp.channels.rdpsnd.client] - [rdpsnd_load_device_plugin]: [dynamic] Loaded fake backend for rdpsnd
[08:48:58:969] [26120:000066fe] [WARN][com.freerdp.channels.drdynvc.client] - [check_open_close_receive]: {Microsoft::Windows::RDS::DisplayControl:9} OnOpen=(nil), OnClose=0x7f02c8b5ecc0
[08:48:58:979] [26120:00006608] [ERROR][com.freerdp.core] - [freerdp_abort_connect_context]: ERRCONNECT_CONNECT_CANCELLED [0x0002000B]

1.2 问题分析

日志中的关键错误:

[ERROR][com.winpr.sspi.Kerberos] - [kerberos_AcquireCredentialsHandleA]: krb5glue_get_init_creds (Cannot contact any KDC for realm 'ATHENA.MIT.EDU' [-1765328228])

FreeRDP试图使用Kerberos认证,但无法联系到域控制器,导致多次超时重试。

1.3 解决方案

明确指定本地认证

1.3.1 对于测试RDP的命令

修改成:

xfreerdp3 /u:"Administrator" /p:"1" /v:192.168.122.122 /cert:tofu /d:WORKGROUP

1.3.2 对于安装脚本的超时失败

通过阅读安装脚本,发现/d:参数由RDP_DOMAIN决定

对应到~/.config/winapps/winapps.conf上,也就是修改成:

# [WINDOWS DOMAIN]
# DEFAULT VALUE: '' (BLANK)
RDP_DOMAIN="WORKGROUP"

1.4 备注

1.4.1 关于AI

大部分AI(DeepSeek Qwen)会给出 xfreerdp3 /u:"Administrator" /p:"1" /v:192.168.122.122 /cert:tofu /sec:rdp或者xfreerdp3 /u:"Administrator" /p:"1" /v:192.168.122.122 /cert:tofu /auth-only:ntlm 一个命令会报错,一个仍然需要等待大量时间

还是Claude牛逼,虽然仍然给出上面的错误指令,但是也给出了正确方案xfreerdp3 /u:"Administrator" /p:"1" /v:192.168.122.122 /cert:tofu /d:WORKGROUP

1.4.2 Claude给出的其他方案(不知道是否可行)

在Windows虚拟机中:

  1. 打开"组策略编辑器" (gpedit.msc)
  2. 导航到:计算机配置 → 管理模板 → Windows组件 → 远程桌面服务 → 远程桌面会话主机 → 安全
  3. 禁用"要求使用网络级别身份验证对远程连接的用户进行身份验证"

或者直接cmd命令:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

2. 中文无法输入

2.1 特点

无法显示输入法候选词窗口

2.2 原因&解决方案

1.Windows原生输入法兼容性不好建议换为微信输入法,百度输入法等

2.Windows开机后在winapps连接前使用了其他连接(KVM的、测试RDP时的),导致输入法候选词窗口跑到其他连接上没回来(我是这样理解的)。一般重启可解决

3. 中文输入乱码

3.1 特点

按键映射错误:

类似这样

  • 打开记事本,输入qw,结果记事本上的内容为s'd,候选词为“上的”
  • 同理,Backspace,Delete等按键也映射异常,导致无法退格删除等
  • 英文就能正常输入

3.2 原因&解决方案

你被README的一句话骗了:

3.2.1 Step 3: Create a WinApps Configuration File 第 3 步:创建 WinApps 配置文件

......

3.2.1.1 Configuration Options Explained

  • .........
  • To enable non-English input and seamless language switching, you can try adding /kbd:unicodeto RDP_FLAGS. This ensures client inputs are sent as Unicode sequences.
  • ......

里面的

To enable non-English input and seamless language switching, you can try adding /kbd:unicodeto RDP_FLAGS. This ensures client inputs are sent as Unicode sequences.

为了启用非英语输入并实现无缝的语言切换,您可以尝试在 /kbd:unicode 添加到 RDP_FLAGS 中。这确保客户端输入以 Unicode 序列发送。

就是它干的!不要加/kbd:unicode!血的教训!

明明是

To enable prevent non-English input and seamless difficult language switching, you can try adding /kbd:unicode to RDP_FLAGS. This ensures client inputs are sent as Unicode sequences garbled.

为了启用阻止非英语输入并实现无缝困难的语言切换,您可以尝试在 /kbd:unicode 添加到 RDP_FLAGS 中。这确保客户端输入以 Unicode 序列乱码发送。

可能对其他语言有用,对中文还是算了吧

4. 已经被我修复 待官方修复 没解决 的问题

注:已经提交了PR等待官方修复ing... 已合并

4.1 发现问题

直接双击打开文件(文件挂载在/run/media/s/松果U盘/DeepSeek.pptx

屏幕截图_20250806_213526

但是用①选择文件打开,正常。之后直接点②也能直接打开。

奇了怪了

image

4.2 分析问题

仔细观察发现:

图一的路径是\\tsclient\media\松果U盘\DeepSeek.pptx

图二的路径是\\tsclient\media\s\松果U盘\DeepSeek.pptx

也就是说,winapps启动的时候挂载的是\\tsclient\media\s\松果U盘\,但是启动PowerPoint的命令行却指向了\\tsclient\media\松果U盘\,导致PowerPoint找不到文件

花了一晚上时间,发现是~/.local/bin/winapps的正则匹配有问题

第668行的-e 's|<sup>('"${REMOVABLE_MEDIA//|/\|}"')/[</sup>/]*|\\\\tsclient\\media|' \

应该改成-e 's|^'"${REMOVABLE_MEDIA}"'|\\\\tsclient\\media|' \

已经提交了PR等待官方修复ing... 已合并

4.3 解决问题

编辑~/.local/bin/winapps,把第668行改成:

                -e 's|^'"${REMOVABLE_MEDIA}"'|\\\\tsclient\\media|' \

大功告成!

posted @ 2025-08-06 21:43  sunong  阅读(63)  评论(0)    收藏  举报
Sakana Widget右下角定位