WINVNC Server详解
(本文由VNC官方文档翻译和改编而来,如果需要更详细和更确切的信息,请参看VNC官方文档www.realvnc.com)
作者Somerset(darzui@yahoo.com.cn)
第一版(以后还会更新和修正)
常规选项(Properties窗口中)
Accept Socket Connections
(默认为选中)服务器接受从vncviewer程序发送的直接的、基于socket的连接。如果未选中,则不接受任何连接。
Display Number
由客户viewer连接时指定的连接号(在viewer的地址输入框中制定)。通常不需要更改,保持默认值就可以了。
Auto
选中,则server自动选择未被使用的连接号;不选中,则指定使用所填写的连接号。
Password
制定连接的密码,客户viewer需要输入这个密码
Enable Java Viewer
客户端可以同过http://服务器ip:5800+连接号 的方式,在浏览器中使用java applet访问服务器。
When Last Client Disconnects
当最后一个客户断开连接的时候,可以选择干下面的事情:
1) 什么也不干
2) 锁定计算机
3) 注销
Disable Remote Keyboard & Pointer
客户端可以看到服务器的屏幕,按时不能操作
Disable Local Keyboard & Pointer
只能在NT/2000/XP下起作用。在连接期间,服务器本地的键盘和鼠标将无法操作。
Remove Desktop Wallpaper
是否在连接期间去除服务器桌面壁纸,以免浪费带宽。
Poll Full Screen
当客户有操作的时候,更新整个屏幕。
Poll Foreground Windows
当客户有操作的时候,只更新在最前端的窗口
Poll Window Under Cursor
当客户有操作的时候,只更新在光标下面的窗口
Poll Console Widows Only
Poll On Event Received Onley
(以上几个Pool选项,我发现似乎对实际效果没什么影响,服务器总是会把所有窗口的更新都发送到客户端)
高级设置
winvnc的一些参数,需要在注册表中指定,可能在注册表的下面几个位置:
1)本地机器设置:这里的设置不会被其他位置的设置覆盖。
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\
2)本地默认用户设置:
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\Default
3)本地用户设置:这里的设置会覆盖“本地默认用户设置),如果没有当前用户,则使用SYSTEM用户
HKEY_LOCAL_MACHINE\Software\ORL\WinVNC3\<username>
4)全局用户设置:只有AllowProperties(下面会提到)设置为0,才可以读取这里的设置
HKEY_CURRENT_USER\Software\ORL\WinVNC3
AllowEditClients
是否显示“Add New Client”和“Disconnect All Clients”菜单项目。本地用户设置
AllowLoopback
是否允许viewer连接到在同一台机器上的server。本地机器设置
AllowProperties
是否允许查看properties对话框。本地用户设置
AllowShutdown
是否允许关闭winvnc。本地用户设置
AuthHosts
REG_SZ字符串类型,指定一个ip模板列表,只有符合这个模板的客户端才允许连接。该列表默认为空,任何地方的连接都是允许的。模板的形式如下:
+[ip-address-template]
?[ip-address-template]
-[ip-address-template]
[ip-address-template]表示ip地址最左边的部分。比如+158.97匹配158.97.12.10和158.97.14.2。多个模板之间用“:”隔开,而且后面的模板会覆盖前面的。比如-:+158.97将过滤掉除158.97打头的ip以外所有的连接。如果客户端ip在“?”打头的模板中,那么这个客户端连接上来之后,服务器会弹出一个对话框,提示是否让允许这个客户端连接。QuerySetting选项将决定AuthHosts选项的准确行为。本地机器设置
AuthRequired
默认情况下,除非服务器密码被设置为一个不为空的值,否则将不接受任何连接。这是为了安全性的考虑。设置这个值为0将取消掉空密码检查的限制。本地机器设置
AutoPortSelect
使得winvnc自动使用第一个可用的数字,和Properties对话框里的“Auto”选项作用相同。本地用户设置或全局用户设置
ConnectProiority
默认情况下,当一个非共享的连接通过验证后,wnc服务器会断开现存的其他连接。这个选项指定了当接受了一个非共享的连接后,服务器的行为:
0:断开所有现存连接
1:不断开其他连接
2:拒绝这个新连接
本地机器设置
DebugLevel,DebugMode
对log文件进行一些设置
DebugMode指定以什么方式记录log。
1=MSVC调试器
2=输出到Winvnc.log文件
4=输出到控制台窗口
也可以对以上数字进行组合,比如DebugMode=6将导致既记录到Winvnc.log文件也输出到控制台窗口
DebugLevel指定记录多少信息,可以是任何正整数。默认为0,即什么都不记录。10-12将导致记录所有的debug信息。本地机器设置
HTTPConnect
是否允许java applet客户端连接,和Properties对话框里的“Enable Java Viewer”相同。本地用户设置或全局用户设置
IdleTimeout
这个选项告诉Winvnc,客户端多少时间不操作,就断开连接。如果没有设置或设置为0,则没有超时限制。本地用户设置或全局用户设置
InputEnabled
是否允许客户端控制服务器。和Properties对话框中的“Disable Remote keyboard and pointer”相同。本地用户设置或全局用户设置
LockSetting
当所有连接断开后,服务器的行为
0:什么也不干
1:锁定计算机
2:注销
本地用户设置或全局用户设置
LoopbackOnly
只接受和server在一台机器上的viewer的连接。这个设置会覆盖AllowLoopback和AuthHosts设置。
Password
连接密码。本地用户设置或全局用户设置。
PollUnderCursor、PollForeground、PollFullScreen、OnlyPollConsole、OnlyPollOnEvnet
和上面提到的设置相同。本地用户设置或全局用户设置
PortNumber
设置vnc的端口号,先禁止掉AutoPortSelect,再设置这个。本地用户设置或全局用户设置
QuerySetting
用于定制AuthHost的设置,用于配置“+”、“?”、“-”这三种符号的作用。是DWORD值,范围从0到4(安全性越来越高)。以下列出了这个值如何影响AuthHosts的行为。
0 - +:Accept, ?:Accept, -:Query
1 - +:Accept, ?:Accept, -:Reject
2 - +:Accept, ?:Query, -:Reject [Default]
3 - +:Query, ?:Query, -:Reject
4 - +:Query, ?:Reject, -:Reject
默认情况下,认为值是2。本地用户设置和全局用户设置
QueryTimeout
是否允许连接对话框显示多少秒之后自动拒绝连接(参看AuthHost和QueryString选项)。本地用户设置和全局用户设置
RemoveWallpaper
和Properties对话框的选项作用相同。本地用户设置或全局用户设置
SocketConnect
和Properties对话框的选项作用相同。本地用户设置或全局用户设置
VNCHooks-高级设置
WinVNC使用了一个特别的库VNCHooks挂接到其他正在运行的程序中,用来捕获屏幕改变区域(这里的“改变区域”是名词短语)的通知。VNCHooks向可见窗口发送消息,来判断哪些屏幕区域需要更新。因为不是所有的程序都使用同样的方式更新屏幕,所以需要调整WinVNC来适应不同的需要。这些配置在注册表以下位置:
HKEY_CURRENT_USER\Software\ORL\VNCHooks\Application_Prefs
user_GetUpdateRect
use_Timer
use_KeyPress
use_LbuttonUp,use_MbuttonUp,use_RbuttonUp
use_Deferral
命令行参数
-run
运行winvnc,并且忽略后面的命令行参数。比如winnvc –run –install,将只运行vnc,而不执行-install
-install
注册winvnc为windows服务
-reinstall
移除winvnc服务,然后重新注册为服务
-remove
移除winvnc服务
-settings
显示正在运行的winvnc的User Properties窗口,显示当前用户的配置,如果没有winvnc正在运行,则不起作用。
-defaultsettings
显示正在运行的winvnc的Default Properties窗口,显示默认配置,如果没有winvnc正在运行,则不起作用。
-kill
关闭所有正在运行的winvnc
-about
显示正在运行的winvnc的about窗口。
-connent[host]
让正在运行的winvnc连接到制定主机的viewer。这个命令的作用和“Add New Client”菜单项相同。
一些问题
颜色数量的问题
实验过程:
1) 在liuqian上,连接DBSERVER,双方桌面都是32位真彩色,没有发现颜色数有变化。
2) 当liuqian设置位16位真彩的时候,发现DBSERVER窗口标题拦出现颜色渐变的断层。
实验结果:
vnc可以传输32位真彩的桌面
让vnc server作为服务(service)运行
方法1:从开始菜单的vnc菜单组中选择"Register VNC Server Service"
方法2:运行命令行:winvnc –install
向服务器发送Ctrl+Alt+Del的问题
这个功能似乎没起作用。。。