还有一些其他帖子(例如远程设置VNC服务密码) 但都局限于某一特定的 VNC 软件/版本。
我的情况是,我在 Windows 域中拥有大约 500 台 PC,并且它们安装了多个 VNC 版本 - RealVNC4、UltraVNC、TightVNC 以及每个不同的版本。
因此,有些使用 ini 文件(例如最新版本的 UltraVNC),有些使用注册表,并且它们使用注册表的不同部分。
有谁知道可以尝试所有选项并设置密码的脚本/工具吗?
答案1
不存在这样的工具。
在您尝试自己编写脚本来做一些非常愚蠢的事情(例如在 500 个 VNC 服务器上尝试一堆不同的凭据并报告结果)之前,唯一不会非常痛苦或涉及大量手动工作的解决方案如下。
- 编写脚本/GPO 来卸载您环境中的所有 VNC 服务器。
- 我使用这些 VNC 服务器的经验告诉我,您可以检查注册表项以获取安装的特定应用程序和版本,然后使用它来调用(正确的)卸载程序。
- 确定您想要的标准 VNC 服务器部署。
- 当然包括您希望这些服务器拥有的凭证。
- 根据您决定推出的 VNC 服务器,可能只需使用安装程序安装服务器,然后将包含设置和凭据的 .ini 文件复制到所有客户端(通过 GPP)即可。
- 编写 GPO 以将 VNC 服务器安装到所有客户端。
- 可能最好使用计算机启动脚本。
- 再次,在调用安装程序之前使用注册表项检查它是否已安装。
- 根据新版本的需要更新脚本。
这比尝试处理多个 VNC 服务器供应商的多种配置要好得多,甚至应该比你现在的情况更容易管理,我甚至不会尝试处理现在的情况。你肯定会处于一种从头开始构建比修复容易得多的情况。
答案2
为了记录,下面是我用来在所有计算机上禁用 VNC 的脚本(在域中的所有计算机上运行该脚本):
@ECHO OFF
:: Find out what VNC services exists
for /f "tokens=1" %%f in ('psservice \\%1 ^| egrep -i "vnc|tvnserver" ^| grep "SERVICE_NAME" ^| sed "s/SERVICE_NAME: //"') do (
echo %%f
psservice \\%1 stop %%f
psservice \\%1 setconfig %%f disabled
)
这需要 Sysinternals 和 UnixTools。