Akira's Commentary

VNC Frequently Asked Questions (FAQ)

Getting Started

Q01
VNCはどこで手に入れることができますか?
Q02
ORLとかいう名前ではありませんしたか? Olivetti/Oracleとはどのような関係なのですか?
Q03
.EXEファイルをダウンロードしたのですが、 実行できません。
Q04
SETUP.EXEを実行しようとしたのですが、 何もおきません。
Q05
WinVNCを起動したのですが、 何もおきないように見えます。 タスクバーにアイコンが表示されません。
Q06
NTでWinVNCを実行させたら ブルースクリーンを表示して落ちてしまいました (ブルースクリーンデス)。
Q07
(WinVNCで)「disabling Nagel's algorithm」という エラーメッセージが出ました。 これはどういう意味でしょう?
Q08
(WinVNCで)「'Planar vs Chunky' screen formats」という エラーメッセージが出ました。 これはどういう意味でしょう?
Q09
VNCを使って、Windows 95/98をダイアルアップで 遠隔操作したいのですが、どうすればいいのでしょう?
Q10
UNIXでvncserverプログラムを実行したのですが、 「No such file or directory」というメッセージが出ます。
Q11
vncserverプログラムを実行したのですが、 「Number found where operator expected」、 「prototype mismatch」、 「out of memory」、 というエラーメッセージが出ました。
Q12
vncserverでXvncを起動したのですが、 「Cound not open default font 'fixed'」という メッセージを出してXvncが終了してしまいました。
Q13
(Xvncで)ログファイルに「failed to bind listener」とか 「Failed to establish all listening sockets」といった エラーが出ていました。
Q14
vncserverが、ログに何もメッセージを残さずに 止まってしまいます。
Q15
Solaris/HP-UXでXvncがコアダンプして落ちてしまいます。
Q16
UnixのVNCサーバに接続したのですが、 グレイのデスクトップとカーソルしか表示されません。
Q17
ログファイルに、xrdb/Xlibからのエラーメッセージが出ています。
Q18
私のブラウザではJavaクライアントが動きません。
Q19
Windows ビューワを起動したのですが、 コネクションダイアログが表示される前に落ちてしまいました、 あるいは、「invalid page fault」というエラーが出ました。
Q20
ビューワがサーバに接続できません!!

Running the Program

Q21
X VNCサーバは動作しているのですが、 いつものデスクトップとは違っています。 どうすればウィンドウマネージャとかを変更できるのですか?
Q22
Windowsのサーバと同じように、 ワークステーション上の通常のXの画面(display :0)に リモートアクセスできないのでしょうか?
Q23
vncserver/Xvncがルートでしか動作しません。
Q24
XvncはどのようなXビジュアルを使っているのですか?
Q25
ビューワとサーバとの間でカット&ペーストはできますか?
Q26
Xvncにメモリリークがあります。
Q27
誰もログインしていない状態で Windowsサーバ(WinVNCサーバ)を実行させることはできますか?
Q28
Ctrl-Alt-Delが効きません。 NTワークステーションをリモートからアンロックできません。 スクリーンセーバを止めることができません。
Q29
VNC(WinVNC)に接続してログインするとコネクションが切られてしまいます。 再度接続し直さないと使えません。
Q30
リモートアクセス中に、サーバのローカルディスプレイ、 キーボード、マウスを無効にすることはできませんか?
Q31
WindowsサーバにCtrl-Alt-Delを送ることができません。
Q32
Windows 2000 で動作しません。
Q33
デッドキーが動作しません。
Q34
DOSウィンドウを起動したのですが、表示されません。
Q35
DOSウィンドウやDOSアプリケーションにキー入力できません。
Q36
キーが入力できません。キーをたたくと何か変なことがおきます。
Q37
たいていのWindowsアプリケーションはちゃんと動作するのですが、 いくつか画面が更新されないものがあります。
Q38
WinVNCを使ったらPCにものすごく負荷がかかります。
Q39
ビューワが接続して少し経過したところで、 WinVNC、あるいは他のアプリケーションが止まってしまいます。
Q40
リモートのWindowsのディスプレイがきちんと表示されません。
Q41
リモートWindowsでうまくダブルクリックできません。
Q42
WinVNCを多くのマシンにサービスとしてインストールしたいのですが、 いちいちパスワードを設定していくのは面倒です。 一度に済ませることはできませんか?
Q43
Windowsには2ボタンマウスしかないのですが、 Xでどうしても3ボタンマウスが必要なのです。
Q44
Windowsで3ボタンマウスを使っているのですが、 ミドルボタンが効かないようです。
Q45
私のマシンにはDNSエントリやスタティックIPアドレスがありません。 こういう場合には どうやって私のマシンのWinVNCサーバに接続するのでしょうか?
Q46
WinVNCのタスクバーアイコンを消すことはできませんか?
Q47
WinVNCの認証に、Windows NTのパスワードを使うようにできますか?
Q48
Macintoshサーバを マシンブート時に自動的に起動されるようにすることはできますか?
Q49
Macサーバに新しいパスワードを設定したいのですが、 webページでCHANGEボタンを押してもなにもおきません。 settings.htmlページを表示しようとするのですが失敗してしまいます。

General Questions

Q50
どうすればVNCをもっと速くできますか?
Q51
VNCはfirewallを越えて使えますか?
Q52
VNCはどのTCP/IPポートを使うのですか?
Q53
VNCを標準サービス用のポート(21とか80)で使うことはできますか?
Q54
VNCはどの程度安全なのでしょう?
Q55
VNCをもっと安全にする予定はありますか?
Q56
リモートサーバ、ローカルビューワ間でのファイル転送、できれば ドラッグ&ドロップによるもの、はできますか?
Q57
AIX、EPOC、HP-UX、SGI、Win3.1、私のところのこのシステム...の サポート予定はありますか?
Q58
ストリームを圧縮すると動きは良くなるのでしょうか?
Q59
ビューワ側でスクリーンの一部をキャッシュする、というのはどうでしょう?
Q60
TCP/IPを使わないで、モデム直結でVNCを使うことはできますか?
Q61
VNCにはY2K問題はありますか?
Q62
WinVNCを多くのマシンにインストールしたいのですが いい方法はありませんか?
Q63
一台のWindowsサーバに複数のユーザが接続して、 ユーザ毎に別々のデスクトップを持つことはできますか? WinFrame、NTrigue、WTS等みたいに、です。
Q64
他に何かヒントはありますか?
Q65
ダウンロードページの「organization」のスペルが間違っています!

Compiling the Source

Q66
WinVNCをコンパイルしようとしたら、 コンパイラがファイルが無い!といってきます。
Q67
私のところのプラットフォームでVNCを コンパイルしようとしてもうまくいかないのですが...

Getting Started

Q01
VNCはどこで手に入れることができますか?
-  
最新版のVNCとドキュメントは AT&Tケンブリッジ研究所のウェブサイト http://www.uk.research.att.com/vnc (ミラー) で入手することができます。 これに加えて、 Contributedページには、拡張版、改造版、 他のプラットフォームに移殖されたものがあります。 補遺(1)
Q02
ORLとかいう名前ではありませんしたか? Olivetti/Oracleとはどのような関係なのですか?
-  
ORLは、元々はOlivetti Research Laboratoryとして 12年前に設立され、最近 Oracleも 共同出資するようになったのですが、1999年1月に、 AT&Tに買収されて、 AT&Tケンブリッジ研究所 (AT&T Laboratories Cambridge)になりました。 補遺(1)
Q03
.EXEファイルをダウンロードしたのですが、 実行できません。
-  
Netscapeには、自分がそのタイプを知っていると思い込んだファイルに .EXE拡張子を付けてしまうという変な癖があります。 ダウンロードフォームで圧縮ファイルの種類を指定しますが、 そこには.EXEは含まれていません ですから、ダウンロードしたファイルに.EXEがついていたなら、 指定した圧縮ファイルの拡張子に変更してください。
Q04
SETUP.EXEを実行しようとしたのですが、 何もおきません。
-  
SETUP.EXEは、ネットワークドライブからでは動かないことがあります。 ですから、最初にローカルドライブにコピーしてから実行してみてください。 また、NTを使っているなら、 サービスパック3以降がインストールされている必要があります。 Windowsパッケージで使っているInstallShieldは サービスパック3以降でないと動作しないようです。
Q05
WinVNCを起動したのですが、 何もおきないように見えます。 タスクバーにアイコンが表示されません。
-  
もし3.3.3よりも古いバージョンを使っているのでしたら、 まずは3.3.3以降の新しいバージョンに置き換えてください。 タスクバーにアイコンが表示されないのは、 WinVNCが誰がログインしているのかを 認識できないためです。
Win95では、ログイン時のパスワードダイアログを スキップした場合に発生します。 いつもパスワードダイアログをスキップしているなら、 Windowsのパスワードを無しにした方がいいでしょう。 そうすればパスワードダイアログが表示されなくなります。
WinVNCをサービスとして実行している場合には、 サービスがService Helperとコンタクトできなかった 場合に発生します。 詳しくはWinVNCのドキュメント [原文/ 翻訳]を御覧ください。 これは、スタートメニューからService Helperを 実行させることによって解決できます。
Q06
NTでWinVNCを実行させたら ブルースクリーンを表示して落ちてしまいました (ブルースクリーンデス)。
-  
これについても、サービスパックの3以降が インストールされていることを確認してください。 これは、多くの場合、サービスパック1のバグのせいです。 また、システムのコンポーネントを追加したり 変更した場合には、再度サービスパックを 適用し直さなければならない点にも注意してください。
サービスパック3以降を適用しても、 まだブルースクリーンデスが発生するようでしたら、 ネットワークドライバ、ビデオドライバの 新しいバージョン(修正版)が出ていないか調べてください。 VNCはビデオシステムとネットワークに 多大な負荷をかけますので、これによって ドライバのバグが顕在化することがあります。 もちろんWinVNCのバグ、という可能性もありますが、 多くの人がさまざまなマシンで問題なく使用していますので、 まずはシステム側の問題を疑ってみてください。
Q07
(WinVNCで)「disabling Nagel's algorithm」という エラーメッセージが出ました。 これはどういう意味でしょう?
-  
Nagelのアルゴリズムというのは、 ソケットコネクションで多用される最適化アルゴリズムです。 これはある種の状況において、多数の小さな送信データを 大きな塊にまとめて送信するものです。 しかしVNCは小さな送信データ(マウス移動とか)が 即時に送信される必要がありますので、 VNCではTCP_NODELAYオプションでこの最適化を オフにしています。 もしこれがエラーになるなら、 それはTCP/IPプロトコルスタックの問題です。
特に、マイクロソフトはNTのサービスパック6で このバグを取り込んでしまいました。 しかし、ナレッジベース(KB)の Q245678 の説明によればこの件についてのホットフィックスが出ているようです。 これも駄目でしたら、 http://www.microsoft.com/technet/security/bulletin/ms99-046.aspの セキュリティパッチを試してみてください。 聞いたところでは、これは不完全なSP6a相当のものらしいのですが、 これでもフィックスされるそうです。 将来のVNCでは、このオプションが設定できない場合には、 フェータルエラーではなく、ポップアップを表示してユーザに 通知するように変更します。
Q08
(WinVNCで)「'Planar vs Chunky' screen formats」という エラーメッセージが出ました。 これはどういう意味でしょう?
-  
このエラーは、WinVNCをWindows 95/98/ME、あるいはWindows 2000の 16色ディスプレイモード(16ビットモードではなく)で使っている場合に 発生します。 この問題は、16色のVGAディスプレイドライバでの スクリーンの内部表現形式によるものです。 ディスプレイドライバをハードウェア固有のものに変更するか、 あるいは色数を(256色、あるいは16ビット、32ビットに)増やしてやる ことによって解決されます。 なおWindowsNTではこの問題は出ないようです。
Q09
VNCを使って、Windows 95/98をダイアルアップで 遠隔操作したいのですが、どうすればいいのでしょう?
-  
まず、まだインストールしていないのでしたら コントロールパネルでモデムをインストールしてください。 更にサーバとして使うマシンで ダイアルアップネットワークサーバをセットアップしてください。

ただしこれはWin98とNTの場合です。 Win95では標準外で、Plus!パックに含まれています。 また、バージョン1.3以降にアップデートしなければなりません。 このドキュメントを作成した時点ではマイクロソフトサイトの ここ から入手できます (2)

ダイアルアップサーバは ダイアルアップネットワーキングウィンドウの「Connections」 メニューで有効にすることができます。 もしそのようなメニューがなければ、 あるいは上で述べたように 新しいバージョンのものに更新していたなら、 コントロールパネルのアプリケーションの追加、削除の 「セットアップと削除」でインストールしてください。
ダイアルアップサーバが動作していて、 マシンにダイアルアップすると、 192.168.55.1というようなIPアドレスを持ちます。 このアドレスは、マウスをVNCアイコンの上に持ってくる、 あるいは「netstat -r」「winipcfg」によって 確認することができます。ビューワからは vncviewer 192.168.55.1:0でアクセスすることができます。
Q10
UNIXでvncserverプログラムを実行したのですが、 「No such file or directory」というメッセージが出ます。
-  
vncserverはperlスクリプトで最初の行でperlのパスを指示しています。 Linuxではこれは「/usr/bin/perl」ですが、 他の環境では「/usr/local/bin/perl」になっているかもしれません。 これを正しいパスに変更してください。
Q11
vncserverプログラムを実行したのですが、 「Number found where operator expected」、 「prototype mismatch」、 「out of memory」、 というエラーメッセージが出ました。
-  
この問題は3.3.2R3以降では修正されています。
これはPerlのエラーで、Perlのインストールが 正しくなかった場合に発生します。 いままで聞いたところでは、 S.u.S.E. linuxおよびREDHAT5.2で発生しています。 この問題はvncserverスクリプトの
 eval 'require "sys/socket.ph"';
で発生しているようです。まずはこの行を
 ($] >= 5.0)
        ? eval 'use Socket' : 
	: eval 'require "sys/socket.ph"';
に変えてみてください(1行に繋げてください)。 もしこれがだめなら(S.u.S.E.ではだめなようです)、
 eval 'require "linux/socket.ph"';
で試してみてください。これでもだめなら、 socket.phがどこのディレクトリにインストールされているかを 確認してそのディレクトリに合わせて書き換えてください。
なお、vncserverスクリプトはXvncの起動を簡単にするための ラッパーに過ぎないので、 不都合があればXvncを直接起動してもかまいません。
Q12
vncserverでXvncを起動したのですが、 「Cound not open default font 'fixed'」という メッセージを出してXvncが終了してしまいました。
-  
Xvncサーバは起動するのに'fixed'フォントを必要とします。 これが見つからない場合には、マシンでの設定に合わせて vncserverスクリプトで正しいフォントパスを指定してください。 フォントパスが判らない場合には、通常のXセッションで 「xset q」を実行してください。 表示される情報の中に、通常のXサーバが使用している フォントパスが含まれています。 普通は、Xvncでもそのパスを使うことができます。 なお、プラットフォームによっては、フォントパスの セパレータとして、カンマではなくコロンを使う必要の あるものもあります。
さらに、存在しないディレクトリをフォントパスに 指定していると、VNCサーバは文句をいってきます。 そのような場合には存在しないディレクトリを フォントパスから取り除いてください。 また、古いXvncサーバはデフォルトでは解像度100dpiで動作します。 しかしREDHATには、75dpiしかインストールしないものがあるようです。 このような場合には、 足りないフォントをRPMからインストールするか、 Xvncに-dpiオプションを付けて起動するか、 あるいは新しいバージョンに入れ替えてください。
Q13
(Xvncで)ログファイルに「failed to bind listener」とか 「Failed to establish all listening sockets」といった エラーが出ていました。
-  
これは多分「/tmp/.X11-unix」ディレクトリの パーミッションによるものです。 Solaris 7.0やRedHat 6.0にアップデートした時によく出るようです。 これについては Q23 vncserver/Xvncがルートでしか動作しません の節を御覧ください。
Q14
vncserverが、ログに何もメッセージを残さずに 止まってしまいます。
-  
まず、Xvncプロセスが本当に終了しているかどうかを チェックしてください。 もし、本当に終了しているのなら、 vncserverスクリプトで指示されたVNCのフォントパスが 実際に存在しているかどうかをチェックしてください。 Xvncが使っている古い版のXFree86のコードでは、 実際には存在していないフォントパスのディレクトリをサーチすると、 なにもログを残さずにサーバが終了してしまうことがあります。 3.3.3以降にアップグレードすれば、この手の問題は軽減されます。
Q15
Solaris/HP-UXでXvncがコアダンプして落ちてしまいます。
-  
Xvncが使っているXFree86のコードには、 16ビットカラーを使った場合に、 Solarisでのサーバ動作を不安定にするバグがあります。 「-depth」オプションを使って、8ビットカラー、 あるいは24ビットカラーにして起動してみてください。 これで問題なく動作するはずです。 また、同じような問題がHP-UXでも発生するようです。 HP-UXの問題については、Darrrel Kindred 氏の Alphaマシンでの高速化パッチ(3) で解決されています。 なお、この問題は3.3.3以降のリリースでは解消されています。
Q16
UnixのVNCサーバに接続したのですが、 グレイのデスクトップとカーソルしか表示されません。
-  
vncserverスクリプトは、Xvncサーバを起動した後、 ~/.vnc/xstartupを実行します。 デフォルトでは、 このスクリプトでtwmウィンドウマネージャが起動されます。 twmがコマンドパスに存在していなかった、 あるいは他のものを起動したい、という場合には ~/.vnc/xstartupを変更してください。 また、何が起きたかはログファイル(~/.vncの下)にも 残されていますので、そちらも確認してください。
Q17
ログファイルに、xrdb/Xlibからのエラーメッセージが出ています。
-  
デフォルトでは、 xstartupは最初にxrdbを起動してリソースをロードします。 ですから、Xvncが何かの理由で起動できなかった時には、 多くの場合、xrdbが最初にそれに気付いてエラーメッセージを 出力することになります。

ですが、ログファイルに「command not found」と出ていたなら、 xrdbがコマンドパスに存在していない、ということです。 xrdbがどこにあるか探してパスを追加してください。

エラーメッセージが「connection refused」とか 「Can't connect:errno=111」といったものでしたら、 Xvncは多分動作していません。このような場合には 実際にXvncのプロセスが動作しているかどうかを調べ、 またログファイルの前の方になぜ終了したかを示すような メッセージが出ていないかどうかを調べてください。
多くの場合、Xvncが起動に失敗するのは、 'fixed'フォントを見つけられないためです(上述)。 他の可能性としては、 サーバがなにもいわずにクラッシュしてしまった、とか、 起動に異様に時間がかかっている、というものがあります。 vncserverスクリプトではXvnc起動から、xstartupを実行するまでに 3秒の遅延を入れています。 しかし、ひどく遅い場合にはこれでは不充分なのかも知れません。
また、アプリケーションがIPアドレスの解決に失敗している 可能性もあります。vncserverスクリプトは「uname -n」コマンドの 結果を使って、DISPLAY変数を設定しています。 これによって返されるホスト名から IPアドレスを解決できないために 接続に失敗しているのかも知れません。 きっと/etc/hostsの設定がおかしいのでしょう。
「Client is not authorized to connect to Server」といったメッセージが 出ていた場合には、Xの認証になにか問題があります。 xauthコマンドが使えないのかも知れません。 ログファイルでxauthに関連したメッセージをチェックしてみてください。 この問題を一時的に回避するには、xhostコマンドを使うこともできます。 ただし長期にわたってこれを使用するのはお勧めできません。
Q18
私のブラウザではJavaクライアントが動きません。
-  
Javaの実装によっては、VNCアプレットが動作しないものもあります。 まずは、再ロードしてみてください。 これは、Netscape Navigator 3、Internet Explorer 5で よく発生するようです。 また、web proxy経由でアクセスした場合には、アプレットは動作しません。 可能であれば、直接接続するようにしてください。
Q19
Windows ビューワを起動したのですが、 コネクションダイアログが表示される前に落ちてしまいました、 あるいは、「invalid page fault」というエラーが出ました。
-  
この問題は3.3.3R2以降のWindowsビューワでは修正されています。
これは、最初のコネクションダイアログの表示で使う 最近アクセスしたサーバのリスト(MRU-List)を取り扱うコードに バグがあるためです。 もし最初にビューワを使うなら、サーバ名を指定しないで 起動してください。そうすれば空のMRU-Listが生成されます。 この問題を修正するにはレジストリキーの HKEY_CURRENT_USER\Software\ORL\VNCviewer\MRU を削除してください。
Q20
ビューワがサーバに接続できません!!
-  
VNCは、正しく設定されていて、 正しく動作するTCP/IPネットワークに依存しています。 ですから、メイリングリストで質問する前に、 TCP/IPの設定が正しいかどうかを確認してください。 VNCの問題を疑う前に、以下の点をチェックしてみてください。 どうやってチェックしていいのか判らない、という方は、 近くの専門家に相談してください。
  • クライアントマシンからサーバマシンにpingできますか?
  • サーバマシン上で本当にVNCサーバが動作していますか?
  • VNCサーバはポート5900+ディスプレイ番号のポートで リッスンしています。 クライアントマシンからサーバマシンのこのポートに telnetで接続できますか?
  • ビューワで、接続先にサーバのアドレスをちゃんと指定しましたか? ディスプレイ番号を付け忘れてはいませんか?
  • サーバ名は、DNSで解決されていますか? サーバ名の代わりに直接IPアドレスを使って接続してみてください。 (つまり、snoopy:0ではなく 123.456.78.9:0で)
  • ビューワからサーバまでの間にファイアーウォールとか プロキシが入っていて、アクセスを禁止していませんか?
  • javaクライアントを使う場合(ブラウザから)、 URLにちゃんとポート番号を指定していますか? (http://snoopy:5800といったぐあいに)
  • サーバ、クライアントを別のマシンで動かしてみましたか? こうすれば、問題のあるマシンを特定することができます。
  • 他のアーキテクチャのマシンでも試してみてください。 PCビューワからPCサーバで問題が出たなら、 UNIXサーバに接続してみる、といったことです。 これも、問題のあるマシンを特定することができます。

Running the Program

Q21
X VNCサーバは動作しているのですが、 いつものデスクトップとは違っています。 どうすればウィンドウマネージャとかを変更できるのですか?
-  
ウィンドウマネージャは「~/.vnc/xstartup」スクリプトで 起動されています。デフォルトではtwmが起動されますが、 それはtwmならたいていのUNIXプラットフォームで使えるからです。 ウィンドウマネージャや最初に起動されるプログラムを変更したいなら、 この「~/.vnc/xstartup」スクリプトを編集してください。 また、たいていのUNIX環境では、「~/.vnc/xstartup」を X環境の起動スクリプトへのリンクにすることができます。 そうすれは、いつもと同じX環境が表示されるようになります。
もうすこし、気のきいた方法として、 vncserverの-nameオプションを使って、デスクトップ名毎に xstartupスクリプトの動作を切り換える、といったこともできます。 例えば、
case "$VNCDESKTOP" in
kde)
    startkde &
    ;;
*)
    xterm -geometry 40x10+40+40 -ls -title "$VNCDESKTOP Desktop" &
    twm &
    ;;
esac
とすると、-name kde ではKDE環境が、それ以外の場合には twm+ktermが起動されることになります。 これについては次の質問も御覧になってください。
Q22
Windowsのサーバと同じように、 ワークステーション上の通常のXの画面(display :0)に リモートアクセスできないのでしょうか?
-  
通常のXサーバにVNCサポートを追加すれば、 そのように動作するようになります。   しかし、そのようなバージョンを作成する予定はありません(4)。 しかし、聞いたところでは、 Jens Wagner氏がこのようなものを作成されているそうです。 x0rfbserver を御覧ください。
ケンブリッジ研究所では、XセッションはすべてVNC(Xvnc)で動作させ、 ローカルXサーバはビューワを実行させるためだけに使っています。 これは、同じマシンをサーバとして使う場合よりも却ってはやいぐらいです。 同じマシンで二つのXサーバを実行するのは無駄だと思われる方は、 contribsページ にある、 Ganesh Varadarajanのsvgalibベースのビューワ を使われるのもよいでしょう(5)
Q23
vncserver/Xvncがルートでしか動作しません。
-  
これは、たいていの場合、 XvncがUNIXドメインソケットを作ることができないためです。 UNIXドメインソケットは、
    /tmp/.X11-unix/Xn
というパスで作成されます。 /tmp/.X11-unixディレクトリを書き込み可能にしてください。
    chmod 01777 /tmp/.X11-unix
あるいは、-nolistenオプションによって、XvncにUNIXドメインソケットを 使わないように指示することもできます。 この場合、DISPLAYの設定は単なる":n"ではなく、 "host:n"にしなければなりません。
なお、Xvncに通常のXサーバと同じパーミッションを与える、 という方法もありますが、これはセキュリティ上問題があります。
Q24
XvncはどのようなXビジュアルを使っているのですか?
-  
デフォルトでは、vncserverはXvncを、 もし存在しているなら現在のXディスプレイと同じ色数(depth)で、 存在していなければ8ビットカラー(depth)で、起動します。 カラーマップの問題を避けるために、たとえ8ビットカラーの場合でも、 通常はTrueColorビジュアルを使用します。
しかしながら、いくつかのXアプリケーションは 8ビットTrueColorビジュアルではきちんと動作しません(6)。 このような場合には「-cc 3」オプションで 通常のPseudoColorビジュアルで動作するように指示することもできます。
Q25
ビューワとサーバとの間でカット&ペーストはできますか?
-  
VNCのプロトコル上はサーバとビューワ間で双方向のASCIIテキストの コピーとペーストをサポートしています。 ですから、サーバとビューワがこの機能をサポートしてれば可能です。

ASCIIテキスト、となっていますが、 別にそれだけに制限しているわけではなく、 任意のテキストでのコピー、ペーストが可能になっています。 ですがマシンによるエンコーディングの差異までは 考慮されていませんので、 異なった文字エンコーディングを持つ環境間で コピー、ペーストしてもそのままでは使いものにはなりません。

ビューワが動作しているマシンでクリップボードの内容が変わったなら その変化はサーバに伝えられますし、 逆にサーバ側でのクリップボードの変化もビューワに伝えられます。

実際には、このあたりの動作は、サーバ、ビューワによって異なります。 ケンブリッジ研究所配布のものでは、 基本的にはここで説明されたような処理を行なうのですが、 設定によって変更することもできるようになっています。 このあたりについては、それぞれのサーバ、ビューワの ドキュメントで確認してください。

ただしいくつかの例外があります。
  • Xには複数のクリップボードを使う方法があり、 アプリケーション毎に異なった方法が使われています。 現在使われている方法は、 Emacs、xtermについてはきちんと動作します。 特定のXアプリケーションが VNC上でカット&ペーストできなかったなら、 xcutselプログラムを使って クリップボードの内容を他のメソッドにコピーしてみてください。 VNCはCut_Buffer0を使っています。 ですから、(PRIMARYを使っている) UNIXのNetscapeでテキストを選択したなら、 xcutselで「Copy PRIMARY to 0」を実行すれば、 VNC経由でクリップボード内容にアクセスできるようになります。 あるいは、Xリソースを設定して xcutselのボタンラベルをもっと判り易くするといいかもしれません。
    #!/bin/sh
    exec xcutsel \
    	-xrm '*quit.borderWidth:0' \
    	-xrm '*quit.height: 1' \
    	-xrm '*quit.label:' \
    	-xrm '*sel-cut.label: Clipboard: out of netscape' \
    	-xrm '*cut-sel.label: Clipboard: into netscape' \
            -xrm '*font: -*-helvetica-*-r-*-*-*-*-*-*-*-*-*-*'
  • ブラウザで動作しているJavaアプレット版のビューワは、 マシンのクリップボードにアクセスすることができません。 このためにJavaビューワには「clipboard」ボタンがついています。 clipboardボタンを押すとポップアップウィンドウが表示され、 リモートマシンのクリップボードの内容が表示されます。 これをローカルマシンに (ローカルマシン側の通常のCUT&PASTE操作で) 取り込むことができます。
Xサーバからビューワへのコピー機能は、3.3.2までは動作していませんでした。 この機能は3.3.2r3以降でちゃんと動作するようになりました。 ですから、古いバージョンのものをまだ使っていらっしゃるなら、 アップグレードしましょう。
Q26
Xvncにメモリリークがあります。
-  
バージョン3.3.2r3で解決されました。 以前のバージョンをお使いでしたら パッチ があります(3)
Q27
誰もログインしていない状態で Windowsサーバ(WinVNCサーバ)を実行させることはできますか?
-  
できます。ドキュメント [原文/ 翻訳]の 「running WinVNC as a service」のところを御覧ください。
Q28
Ctrl-Alt-Delが効きません。 NTワークステーションをリモートからアンロックできません。 スクリーンセーバを止めることができません。
-  
まずは、最新版のWinVNCをサービスとして実行させているか どうかを確認してください。
プラットフォームによっては、ローカルシステムで処理されてしまうために、 Ctrl-Alt-Delを送ることができないものもあります。 ウィンドウズのビューワでは、 Ctrl-Alt-Delはローカルシステムで処理されてしまうので、 メニューからCtrl-Alt-Delを送るようになっています。 場合によっては(ビューワによっては)、 他のキーコンビネーション、例えばCtrl-Alt-Backspaceとかによって 送るようになっているかも知れません。
スクリーンセーバについては、通常の画面と異なった解像度で 動作していることがあります。 このような場合にはスクリーンセーバの起動、終了で接続が切れてしまいます。 詳しくは次のQAを御覧ください。
Q29
VNC(WinVNC)に接続してログインするとコネクションが切られてしまいます。 再度接続し直さないと使えません。
-  
ユーザの解像度の設定がデフォルトの解像度と異なっていると、 ログインした時点で解像度が切り換えられます。 このような解像度の変更が発生すると、 サーバは接続を切ってしまいます。 ビューワは再度接続し直して、新しい解像度を取得する必要があります。

VNCのプロトコルでは、接続した時点の解像度で動作するように なっているため、接続途中で解像度が変化した場合には対処できません。 このためサーバはコネクションを切断するようになっています。

また、Windows NTでは、ログイン時に一時的に解像度を切り換える ことがあるようで、WinVNCがこれを検出した場合にも 一旦コネクションが切断されてしまいます。
さらに、WinVNCのプロパティで、ディスプレイ番号を変更した場合にも、 コネクションは切断されます。
Q30
リモートアクセス中に、サーバのローカルディスプレイ、 キーボード、マウスを無効にすることはできませんか?
-  
サーバのローカルディスプレイ、キーボード、マウスを無効にしたまたで、 画面を読み込んだり、 ビューワからのイベントを送り込んだりする方法が判りません。 何か役に立つ方法、コードを御存じでしたら、ぜひ教えてください。

WinVNCの最新版(3.3.3r2)では、まだテストコード段階らしいのですが、 リモートアクセス中に ローカルキーボード、マウスを無効にする機能が実装されています。 私が試したところではうまく機能していました。 詳しくはドキュメント [原文/ 翻訳]の レジストリ設定のあたり、 あるいは使用例の VNCで共用NTマシンにアクセスを 御覧ください。

差し当たってこのような点がセキュリティ上問題になるのでしたら、 パスワードプロテクション付きのスクリーンセーバを使う、 ロックできるキーボードを使う、スクリーンを切る、 キーボードを外す、とかの 物理的なプロテクションを考慮してください。
Q31
WindowsサーバにCtrl-Alt-Delを送ることができません。
-  
Ctrl-Alt-Delは、 Windows NTでWinVNCサーバがサービスとして動作している時だけ認識されます。 Win95/98では、Ctrl-Alt-Delですべてのプロセスが、 当然WinVNCサーバも含めて、止まってしまいます (コネクションが切断されます)ので、 使っても意味がありません。
ウィンドウズビューワ、Javaビューワには Ctrl-Alt-Delを送出するメニューがあります。 このメニューを使えば、ビューワ側のマシンで処理されることなく Ctrl-Alt-Delを送出することができます。
MacあるいはX版のビューワを使っているなら、 Ctrl-Alt-Delのキーコンビネーションがそのまま使えるはずです。 しかし、プラットフォームによっては ローカルに処理されてしまうこともあるようです。 そのような場合には、使っていらっしゃる環境でどうすれば ローカル処理を回避できるかを自分で見つけてください。 案外、左右のコントロールキーを試してみるとか、 他のDel/Deleteキーを試してみるといいかも知れません。

X版の最新のビューワ(3.3.3以降)なら、 F8のポップアップメニューからも Ctrl-Alt-Delが送出できるようになっています。 怪しげなXサーバを使っていある場合には、 ポップアップメニュー経由の方が無難でしょう。

Q32
Windows 2000 で動作しません。
-  
標準のVGAドライバを使っていらっしゃるのなら、 SVGAドライバとか、 ビデオカード専用のドライバに変えることはできませんか? Windows 2000 は 古い Win98用のVGAドライバを使っていますが、 このドライバには問題があります。
Q33
デッドキーが動作しません。
-  
異なったプラットフォームでの キーボードの国際化対応は難しい問題です。 デッドキーサポートは除外してあります。 しかし、サポートして頂けるなら感謝します。

日本語入力についても同じ問題があります。

Q34
DOSウィンドウを起動したのですが、表示されません。
-  
マウスを動かしたら、マウスポインタの跡が残ったりしませんか? これは、DOSセッションがフルスクリーンで起動された時に発生します。 このような場合にはWinVNCは画面の内容を読むことができません。 しかし、キー、マウス入力はきちんと渡されます。 ですからAlt-EnterでDOSセッションをウィンドウ表示に切り換えてください。
Q35
DOSウィンドウやDOSアプリケーションにキー入力できません。
-  
これはWindows95ではコマンドプロンプトでのキー入力に ウィンドウズのメッセージではなく直接、BIOSコールを使っているためです。 この問題は、WinVNCのバージョン3.3.1R19以降で解決されています。 これよりも古いバージョンをお使いでしたら、アップグレードしてください。
Q36
キーが入力できません。キーをたたくと何か変なことがおきます。
-  
こういうことを引き起こす共通の問題点があります。 Shift、Ctrl、Alt、といったモディファイヤが押されて、 離される前にビューワがキーボードフォーカスを失ったり、 終了してしまった場合には、 サーバはキーが押されたというイベントは受け取りますが、 キーが離されたというイベントは受け取りません。 このような状況では、 サーバはモディファイヤキーがまだ押されたままでいる、 と判断しますので、以降のキー入力は MならCtrl-M、といった具合に解釈されてしまいます。
このようなことが起きないように色々と工夫はしてきました。 例えば、フォーカスを失った場合には モディファイヤの状態を元に戻すようにしています。 しかし、それでもこのような状況はまだ発生しますし、 わけのわからない状態になってしまいます。 解決方法は簡単です。 もし、キー入力が変だ、と思った場合には、モディファイヤキーを 押して離してみてください。だいたいはこれで正常に戻るはずです。
Q37
たいていのWindowsアプリケーションはちゃんと動作するのですが、 いくつか画面が更新されないものがあります。
-  
WinVNCは、スクリーン上の領域が更新された場合に、 更新領域を推定するためにいろいろなヒントを使うようになっています。 一番役に立つのは、アプリケーションでのWM_PAINTメッセージの発生です。 しかしすべてのアプリケーションが WM_PAINTで画面を描画しているわけではありません。 Windowsのクロック等は他の方法を使っています。
WinVNCはレジストリに、 アプリケーション名とそのアプリケーションの画面更新を 取得するためにはどのような方法を使うといいか、 といったリストを保持しています。 標準的なアプリケーションについては、スタートメニューから 「Install default registry settings」を実行することによって 設定されるようになっています。 例えば、Windowsのクロックについてはタイマーメッセージを 使って画面更新を取得する、と記述されているわけです。 これが未登録でしたら、まずは登録してください。 使用しているアプリケーションはすべて このレジストリにリストアップされますので、 特定のアプリケーションで問題があるようでしたら、 レジストリ設定を変更してみてください。 詳しくはドキュメント [原文/ 翻訳]を御覧ください。
Q38
WinVNCを使ったらPCにものすごく負荷がかかります。
-  
WinVNCは、誰も接続していない場合にはほとんど影響しないはずです。 実際、誰も接続していない場合にはWinVNCは何もしませんので。 もし、誰かが接続している場合に、 100%近い負荷がかかっているのでしたら、 プロパティダイアログで 「Update Handling」の設定を確認してみてください。 大抵の場合はデフォルトの設定でうまく動きます。
もし、
  • 「Poll Full Screen」をチェックしている
  • 「Poll Console Windows Only」をチェックしないで 「Poll Foreground Window」または「Poll Window Under Cursor」を チェックしている
と負荷が激増します。 この問題については、後述の 「Q50 どうすればVNCをもっと速くできますか?」 も御覧ください。
Q39
ビューワが接続して少し経過したところで、 WinVNC、あるいは他のアプリケーションが止まってしまいます。
-  
ある種のスクリーンセーバは、特にWindows 95において、 WinVNCとうまく共存できません。 サーバ側のマシンでスクリーンセーバをすべて止めてみて、 問題が解決されるかどうか試してみてください。
Q40
リモートのWindowsのディスプレイがきちんと表示されません。
-  
前の節でも説明しましたが、 WinVNCがある種のアプリケーションでの画面更新を検出できないために 画面がおかしくなることがあります。 しかし、これによって画面全体がひどくおかしくなることはありません。
もしWin95/98をお使いで、 ビデオドライバが16色しかサポートしていないなら ビデオボード、ドライバを取り替える必要があります。 VNCは少なくとも256色を期待しています。 ですが、WinNTでは16色でも動作します。
最新のサービスパックが適用されていることと、 異なったディスプレイドライバを試してみてください。 WinVNCはビデオカード、ドライバの特性、特に、 BitBltが正しく動作すること、に強く依存しています。 このような問題が出た場合には、 ドライバを新しいものに変えることで、大抵は解決されています。
Q41
リモートWindowsでうまくダブルクリックできません。
-  
デフォルトの設定では、 WinVNCはマウスのボタンアップイベントを受け取ると カレントウィンドウが更新されている可能性があるとして、 ウィンドウを再スキャンします。 この再スキャンにかかる時間のために、 ダブルクリックが 二つのシングルクリックとして解釈されてしまうことがあります。 また、ネットワークの遅延によってもクリックの間隔があいてしまって、 ダブルクリックが認識されないことがあります。
これについては、以下の対策が考えられます。
  • 多くの場合、ダブルクリックで実行されることは、 右クリックのメニューからでも実行することができます。
  • 2回ではなく3回連続してクリックすると、 リモートサーバ側でダブルクリックとして認識されることがあります。
  • サーバ側のコントロールパネルで、ダブルクリックの間隔を長めに 設定することができます。
  • レジストリを編集して、 ボタンアップに対するフックを無効にすることができます。 レジストリの詳細についてはWinVNCのドキュメント [原文/ 翻訳]を御覧ください。 ただし、これを無効にした場合には、 WinVNCがスクリーンの更新を取得しそこねる可能性があります。
Q42
WinVNCを多くのマシンにサービスとしてインストールしたいのですが、 いちいちパスワードを設定していくのは面倒です。 一度に済ませることはできませんか?
-  
直接ではありませんが、インストールする前にレジストリを用意しておくことで 簡単に済ませることができます。 まず、WinVNCがインストールされているマシンで、
    HKEY_USERS/.Default/Software/ORL/WinVNC3
以下のレジストリすべてをリモートマシンの同じレジストリにコピーします。 これには、手動なり、お気に入りのツールなりでコピーしてください。 こうしてレジストリをコピーした先のマシンでWinVNCを実行すると、 WinVNCはコピーしたレジストリのパスワードを使いますので、 いちいち問合せてきません。
他にも役に立ちそうなヒントが、Johannes Norinder氏より送られてきました。 SETUPプログラムを-rオプションを付けて実行すると、setup.issファイルが 通常は、%systemroot%ディレクトリに作成されます。以降のインストールで
    setup -s -h1 [パス名\setup.iss] 
とすると何も入力しないでインストールすることができます。
Q43
Windowsには2ボタンマウスしかないのですが、 Xでどうしても3ボタンマウスが必要なのです。
-  
最新版のWindows Viewerを入手してください。 これなら2ボタン同時押下でミドルボタンをエミュレートします。
Q44
Windowsで3ボタンマウスを使っているのですが、 ミドルボタンが効かないようです。
-  
これはほぼ間違い無くWindowsのマウスドライバの問題です。 Windows版のVNC ViewerはWM_MBUTTONメッセージをちゃんと処理しますので、 ドライバがこれらのメッセージを発行するなら、 何の問題もなく動作するはずです。 しかし、いくつかのマウスドライバでは、 Windowsではめったにミドルボタンが使われませんので、 ミドルボタンを認識しなかったり、 ダブルクリックのような他のイベントを発行したりするようになっています。 このような場合には、Windowsのマウスタイプを他のものに変えてみてください。 試したところでは、Logitech PS/2 Port Mouseはきちんと動作します。 あるいは、上で説明したミドルボタンエミューレションを使うのもいいでしょう。
Q45
私のマシンにはDNSエントリやスタティックIPアドレスがありません。 こういう場合には どうやって私のマシンのWinVNCサーバに接続するのでしょうか?
-  
ISPがダイアルインでダイナミックにIPアドレスを割り付けるなら、 割り付けられたアドレスを WinVNCに接続しようとする人に教える必要があります。
Windows95では、ISPに接続した後、 winipcfgプログラムでIPアドレスを調べることができます。 WindowsNTでは、ipconfigコマンドでIPアドレスを調べることができます。 Linuxでは、hostname -iでIPアドレスを調べることができます。 最新のWinVNCでは、 マウスをタスクバーのWinVNCアイコンの上に持っていくと ローカルマシンのIPアドレスが表示されるようになっています。
もちろん、ISPに繋がっているなら多分電話は使用中でしょうから、 そのIPアドレスをどのようにして他の人に伝えるか、という問題があります。 これには、AOL Instant Messenger のようなchatシステムを使うことができます。 また、割り当てられたIPアドレスを含むwebページを自動的に生成する プログラムなどもあります。 これを使うとwebページを見るだけでIPアドレスが判るでしょう。
Q46
WinVNCのタスクバーアイコンを消すことはできませんか?
-  
できません。 少なくともソースを変更して再コンパイルしない限りできません。 VNCが動作していることを 隠さなければならない正当な理由があるとは思えません。 たしかに、サーバマシンを使っているユーザに WinVNCの設定、パスワード等を変えられては困ることはあるでしょう。 しかし、これについてはWinVNCの3.3.2r3以降での restrictモードで対応できます。 restrictモードでは、WinVNCアイコンは表示されていても、 そこからのメニューは使えなくなります。
ただ、ある状況、特にWin95で、 WinVNCアイコンが表示されないことがあります。 しかし、これはそういう機能があるわけではありません。 これはバグで、何とか直そうとしているものです。 この問題については 「WinVNCを起動したのですが、タスクバーにアイコンが表示されません」 のところを御覧ください。
Q47
WinVNCの認証に、Windows NTのパスワードを使うようにできますか?
-  
現時点ではできません。 NTのセキュリティモデルに問題が多い、ということもありますが、 主には、VNCをできるだけクロスプラットフォームに 対応できるようにするためです。 将来的にはプロトコル、コードのモジュラリティを上げて、 独自に認証モジュールを追加できるようにしたいと考えています。
Q48
Macintoshサーバを マシンブート時に自動的に起動されるようにすることはできますか?
-  
できます。VNC Serverへのエイリアスを作成して Startupアイテムフォルダに入れてください。
Q49
Macサーバに新しいパスワードを設定したいのですが、 webページでCHANGEボタンを押してもなにもおきません。 settings.htmlページを表示しようとするのですが失敗してしまいます。
-  
残念なことに、現在のMacサーバのhttp部分は不安定です。 しかし、AppleScriptで設定することができます。 AppleScriptエディタを開いて以下を入力してください。
    tell application "VNCServer"
    set password to "whatever"
    end tell
他に色々なオプションがあります。 それらは、VNC Server内のディレクトリに記述されています。 AppleScriptエディタでdictionaryをオープンしてください。

General Questions

Q50
どうすればVNCをもっと速くできますか?
-  
ケンブリッジ研究所では、日常的に、 UNIXデスクトップをVNC経由で使用しているのですが、 このような使い方については問題なく許容できると考えています。 このケースでは、そこそこの最新マシン上のUNIXデスクトップ(Xvnc)を 10Mbpsのイーサーネットを介してXビューワ、Win32ビューワから アクセスしています。
しかしWinVNCサーバにアクセスする場合には別です。 Windowsは画面の更新についてちょっとしかヒントがありませんし、 X版とが違ってソースを入手できるわけでもありませんので、 WinVNCサーバにとっては画面の更新領域を探すのは大変な処理になり、 その結果、大変な速度の違いとなって現れてきています。 Windowsサーバがどのように動作するかについてはドキュメント [原文/ 翻訳]を御覧ください。 しかし、Windowsサーバの速度に失望したとしても、諦めてはいけません。 ケンブリッジ研究所では日々高速化に取り組んでいます。 ですが、Unix版(Xvnc)なみの速度になるのは随分かかるとは思います。
VNCセッションを遅くしてしまう原因には色々なものがあります。 しかし、VNCセッションがあまりに遅い、と思われるなら、 以下のようなことを考慮してみてください。
  • ビジーデスクトップ。 VNCプロトコルは、 単色の領域については高速に描画することができます。 単色の領域には、ウィンドウのタイトルバー、スクロールバー、 ページの背景、といったものがあります。 しかし、24ビット色のガールフレンドの写真を スクリーンの背景に張り付けたり、 ディザーされたタイトルバーのようなものを使うなら、 美的趣味に応じたコストを払わなければなりません。 このような デスクトップの背景に色をたくさん使ったり、 複雑な絵を使ったりすることは、 他の何にも増して、VNCの性能を低下させます。 これに関して、 twm ウィンドウマネージャの高速化についての示唆が あります。いくつかの示唆は他の環境でも役に立つかと思います。
  • ハイカラーデスクトップ。 16ビット、8ビット色で使えるなら、 24ビット色を使わないようにしましょう。 Unix(Xvnc)では、複数のサーバを起動することができますので、 通常の作業には大きな16ビット色のサーバを使い、 家からのログインには小さな8ビット色のサーバを使う、 といった使い分けができます。 サーバは幅広いピクセルフォーマットに対応していますし、 ビューワによってはセッション毎にピクセルフォーマットを 切り換えて使うことができるようになっています。 Windowsのビューワなら、 コネクションダイアログから「Options...」ボタンをクリックし、 「Restrict pixels to 8-bit」で 8ビット色のセッションを指示することができます。 これは低速のネットワークでは役に立ちます。 モデムを使っていらっしゃるなら、 スタートメニューのショートカットに 「/8bit」オプションを付けておくことをお勧めします。 こうしておけば、これがデフォルトになります。 リモートのWinVNCサーバを多用するなら、同じように、 もっと解像度を下げて使えないかどうか検討してみてください。 1280×1024のスクリーンには、 640×480のスクリーンの4倍以上のピクセルがあり、 例えば、プリンタキューを調べるだけなら そのような解像度は要らないはずです。 なお、WinVNCの場合には、16ビットカラーが最も具合がいいようです。
  • 最新のグラフィックカード、ドライバに替えてみてください。 VNCはグラフィックを多用するアプリケーションですので、 かなりの違いが出るはずです。 Windowsの場合、グラフィックシステムの性能向上は、 ビューワだけではなく、サーバの性能にも影響します。
  • アプリケーションによっては、再描画の効率の悪いものがあります。 以前のUNIX版のNetscapeは、 スクロール時に画面を2回描画しています。 これはVNCではスムージングの役には立ちません。 またX11Ampは'pause'モードで画面を高速にフラッシュします。
  • Java VM によっては、 ネットワークからの読み込みは高速でも画面への描画が遅かったり あるいは逆に、 ネットワークからの読み込みは低速で画面への描画が速かったりします。 このため、Javaビューワを使っている場合には、Optionsメニューの エンコーディングを変えてみることをお勧めします。 これによって随分と性能が変化することがあります。
  • WinVNCを使っている場合には、必要でない限り、 プロパティダイアログのデフォルト設定を変えないでください。 これについては 「WinVNCを使ったらPCにものすごく負荷がかかります」 のところを御覧ください。
  • 標準提供のクライアントはどれでも矩形領域のコピーが可能です。 このため、Xのウィンドウをドラッグする場合には、 アウトラインのドラッグよりも、 ウィンドウ全体をドラッグする方が高速に描画できます。 ウィンドウマネージャがこのような機能をサポートしているなら、 試してみてください。 また、Roman Mitnitski氏によれば、 マウスのドラッギングスレッショルド(サーバの-tオプション)を増やすと、 性能が向上するそうです。
  • WinVNCを使う場合には、 可能であれば16ビット色(65536色)を使ってください。 たいていの場合にはこれが最も適しています。 何故なら、
    1. 256色のスクリーンを使った場合には、 TrueColourクライアントへの送信の度に、 パレットの変換が必要になります。 256色スクリーンが性能向上になるのは、 クライアントも256色でパレットをサポートしている場合だけです。 クライアントが256色のTrueColourであれば、 32ビットのパレット経由での変換が行なわれます。
    2. 24ビット色のスクリーンを使った場合には、 VNC内部のカラーハンドリングでは24ビット色を 直接扱うことができないので、 32ビット色に変換されることになります。
    3. 24、32ビットのスクリーンでは、ピクセル値の変換のために 三つのテーブルを検索することになります。
    4. グラフィックカードの24ビット色というのは、多くの場合、 32ビット色に変換されていることがあります。 このため、24ビット色は32ビット色よりも遅くなることがあります。
    5. 最後に、16ビット色なら、パレット操作無しで、 一回のテーブルルックアップで ソースからデスティネーションへ ピクセル形式を変換することができます。
低速のリンクでは、 サーバ/クライアント間でデータを圧縮するソフトウェアを使うこともできます。 SSHあたりをこの目的で使うことができます。 SSHの使い方については、 以下のセキュリティの節を御覧ください。
Q51
VNCはfirewallを越えて使えますか?
-  
これは、どのようなfirewallを使うのか、 また、firewall内のサーバに外部からアクセスするのか、 firewallの内部から外部のサーバにアクセスするのか、 によります。
一般的には、firewallは、特定のマシン、ポート以外への コネクションを防ぐようになっています。 ですから、VNCサーバのマシン、ポートへのコネクションを通すように firewallを設定しておけば、 世界中のどこからでもそのVNCサーバに アクセスすることができるようになります。 VNCはXよりもセキュリティリスクは低いとされていますので、 サイトのfirewallでXを通さないようにしている場合でも、 VNCなら通せるかも知れません。
新しいfirewallでは、内部から外部へのコネクションについても 選択的に通すようにすることができるものがあります。 これを使えば、 firewallの外側のサーバにもアクセスできるようになります。 また、VNCのソースを再コンパイルして、 SOCKSサポートを組み込むこともできますし、 他のその手の機能を組み込むこともできるでしょう。 このような設定については Contribsページ を御覧ください。
残念なことなのですが、ブラウザ内でJavaビューワを使う場合、 ブラウザがSOCKSに対応していても、 ビューワはそれに対応して自動的にSOCKSを使う、 というわけにはいきません。 きっとどこかにSOCKS対応したJavaがあるとは思うのですが...
インターネットアクセスに Network Address Translation (NAT)を行なう ルータを経由している場合には、 ルータのコンフィギュレーションによって、 特定のポートへのアクセスを別のマシンにリダイレクトすることができます。 例えば、マシンsnoopyのディスプレイ番号0、 マシンwoodstockのディスプレイ番号1でWinVNCを起動しておいて、 ルータの設定によって、ポート5900へのアクセスはsnoopyに、 ポート5901へのアクセスはwoodstockに転送されるようにすることができます。 VNCで使われるポート番号については次の節を御覧ください。
Q52
VNCはどのTCP/IPポートを使うのですか?
-  
VNCサーバは二つのポートでコネクションを受け付けます。 実際のポート番号はVNCのディスプレイ番号によって決まります。 これは、単一のマシン上で複数のVNCサーバを実行でできるように しているためです。
最も重要なポートは59XXで、XXはディスプレイ番号に対応します。 VNCプロトコル自体は、このポートによってコネクションを受け付けます。 PC上のVNCサーバでは、デフォルトでディスプレイ番号0を使いますので、 VNCコネクションを受け付けるポートは5900になります。
この他に、VNCサーバには単機能のwebサーバが組み込まれていて、 これはブラウザでJavaビューワを実行するために使われます。 こちらのポートは58XXです。 このポートはwebページとアプレットをダウンロードするための HTTP用のポートです。 一旦アプレットが起動された後では、 アプレットは通常のVNCビューワと同様に59XXポートを使用します。
これらのポートでは都合が悪いのでしたら、 サーバが他のポートを使うように変更することができます。 詳しくはそれぞれのサーバのドキュメントを御覧ください。
たいていのビューワでは、 指示されたディスプレイ番号が99よりも大きかった場合には、 59XXではなく、 指示されたディスプレイ番号をそのままポート番号として扱います。 これについては次のQAも御覧ください。
ビューワをlisteningモードで実行している場合には、 ポート5500でサーバからのVNCコネクションを受け付けます。
Q53
VNCを標準サービス用のポート(21とか80)で使うことはできますか?
-  
これは特定のポートしか通さないfirewallを越えて VNCを使いたい場合に必要になります。 これはWindows、UNIXサーバでなら可能です。 詳しくはそれぞれのサーバのドキュメントを御覧ください。
しかし以下の点に注意してください。
  • システムによっては(大半のUNIXがそうですが) 一般ユーザは1024以下のポートを使うことができません。
  • もちろん、それらのポートがすでに他のプログラムで使用されているなら、 VNCサーバがそれらのポートを使うことはできません。
  • 多くのVNCサーバは、VNCプロトコル用と、 Javaアプレットを使うためのHTTP用との二つのポートを使います (前のQAを御覧ください)。 Javaビューワを使いたいのでしたら、 両方とも変更する必要があります。 しかし現時点では すべてのサーバで両方のポートが変更できるわけではありません。
  • ビューワに変更されたポート番号に対応する ディスプレイ番号を指示する必要があります。 ディスプレイ番号は、通常、0から99の間です。 99以下のディスプレイ番号を指示すると、 ビューワはそれに5900を加えたポート番号を使います。 99よりも大きいディスプレイ番号はそのままポート番号として使われます。 それでは99以下のポート番号はどうやって指示するのでしょう? 実は、こういう場合には負のディスプレイ番号を使います。 例えば、マシンsnoopyのポート80のサーバに接続するなら、
        vncviewer snoopy:-5820
    とします。-5820+5900=80ですので、これで接続できます。 これはすべてのビューワでサポートされているわけではありませんが、 Unix、Windows版のビューワではこれでちゃんと動作します。
Q54
VNCはどの程度安全なのでしょう?
-  
VNCのデスクトップにアクセスできれば、 あなたの全環境にアクセスできることになりますので、 セキュリティは重要な問題です。 VNCは最初に接続するとき、 チャレンジ-レスポンス方式のパスワードを使います。 この方式では、サーバはランダムなバイト列を送り、 ビューワはこのバイト列を入力されたパスワードで暗号化してサーバに返し、 サーバはそれを正しい答と比較します。 それ以降のデータは平文で送られますので、理論上は、 悪意のあるユーザに読まれる可能性があります。 しかし、VNCセッションを覗き見するのは、 telnet、rlogin、Xなどに比べると難しいはずです。 更なる暗号化が必要でしたら、 VNCは単一のTCPコネクション上で動作しますので、 SSL等の暗号化機能を付け加えるなり、 SSH等でtunnelingすることができます。
SSHを使うと、リモートのTCPポートをリダイレクトして すべてのトラフィックが暗号化されるようにし、 それをVNCに繋ぎ合わせることができます。 SSHでは暗号化されたデータの圧縮もできますので、 低速リンクでVNCを使う場合には便利です。 これについては Using SSH with VNC のページを御覧ください。
セキュリティについていえば、 VNCのパスワードでは先頭の8文字しか有効にならないことに 気付かれた方も多いかと思います。 これはUnixサーバでパスワードの入力に使っている'getpass'が 8文字までしか入力できないためでして、 他のプラットフォームでもこれに合わせているためです。
Ray Jones氏<rjones@pobox.com>は SSLeayの公開鍵暗号を使用するVNCを作成されました。 またWolfram Gloger氏 <wmglo@dent.med.uni-muenchen.de>は TCP Wrapperライブラリを使ったXvncを作成されています。 これを使うと、どのホストからのコネクションを許すかについて より細かな制御が可能になります。詳しくは contribs ページを御覧ください。
Q55
VNCをもっと安全にする予定はありますか?
-  
いずれは、VNCにより優れたセキュリティを組み込みたいと考えていますが、 一方でそうすべきではない、という意見もあります。 セキュリティに関しては、個別パッケージでのセキュリティ対応に依存するよりも、 SSH、FreeS/WAN、Zebedeeのような単一のシステムで すべてのトラフィックを暗号化する方がいい、といったものです。 もしそのようなシステムがクラックされる可能性が出てきたなら、 そのシステムを取り替えることによって、 すべての通信がより安全になっていくことになります。 また、このような単一システムの方が、 会社レベルのセキュリティシステムとの適合性が高いでしょう。 (7)
Q56
リモートサーバ、ローカルビューワ間でのファイル転送、できれば ドラッグ&ドロップによるもの、はできますか?
-  
多分実現しようとすればできないことはないのでしょうが、 実装するつもりはありません。 ファイル転送は、一見、簡単に見えますが、実際にそれを 異なったプラットフォームで実現しようとすると 様々な問題がでてきます。 例えば、 ファイル名の規約が大きく異なったプラットフォーム間では、 どうやって名前をマッピングしますか? ディスクがフルになった場合はどうしますか? アクセスパーミッションはどうしますか? ドラッグ&ドロップの概念を持っていないプラットフォームには どう対処しますか? 転送に時間がかかりすぎるときにはどうやって中断させますか? 中断した後でどうやって再開しますか?
IP経由でファイル転送を行なうシステムは、すでに多数存在しています。 あえてVNCにファイル転送を組み込むつもりはありません。 ファイル転送を組み込むとコードサイズは倍増するでしょうし、 また正直なところ、あまり興味のもてない多数の問題に係わりたくないのです。 ですから、ファイル転送についてはWindows標準のものや、 FTP、netcat、web、rcp、ssh等々を使ってください。 (7)
Q57
AIX、EPOC、HP-UX、SGI、Win3.1、私のところのこのシステム...の サポート予定はありますか?
-  
現在研究所で使っているすべてのプラットフォームについて VNCを提供しています。 しかし手元にないプラットフォーム用のバイナリを提供するのは大変ですし、 新しいプラットフォーム用のものを開発するには時間がかかります。 しかし、 contribs ページには、第三者による多数のプラットフォームへの移植についての 情報が記載されていますので、まずはそこをチェックしてみてください。
またビューワについてはJava版がありますので、 スピードについては問題があるかも知れませんが、 Javaが使用可能であれば、どのようなプラットフォームでも ビューワは使用することができます。
ですが、多くのプラットフォームでは、少なくともビューワに関しては、 コンパイルは難しいものではありません。 ソースを特定のプラットフォーム向けに手を加えられたなら、 その変更をメインのソースディストリビューションに反映させたり、 パッチを配布できるようにしたいと考えています。
Q58
ストリームを圧縮すると動きは良くなるのでしょうか?
-  
VNCは、画面データのごく一部を送るという点については なかなか効率の良い圧縮を行なっており、 平均して生データの1/20程度に圧縮されています。 この点に興味を持たれた方はプロトコル仕様を御覧になってみてください。 スクリーンダンプを送出するテストでは、 Hextileエンコーディングは 時としてGIFよりも良い圧縮率に達することもあります。 これが一般的に成り立つかどうかは別ですが。
しかし、 Hextileエンコーディング以降は他のエンコーディングを試していません。 それは、
  • 圧縮によっては遅延が問題になってきます。
  • モデムで充分に圧縮されます。
と考えているからです。 ただ、zlib圧縮については、組み込んでみて、それがどのような 影響を与えるかを試してみるつもりでいます。 VNCでは、スクリーンの部分毎に 異なったエンコーディングで送出することができますので、 理論的には、サーバは、この部分についてはJPEGで、 他の部分についてはHextileで、といった具合に送ることもできます。
問題は、サーバでそのような切り分けを行なうのに要求される負荷が 得られる効果に値するのか、という点です。 部分的には、ビューワのPreferred Encodingによってエンコーディングを 制御することができるようになっています。 またXではビューワとサーバが、 同一マシン上で動作している場合にはデフォルトでRaw Encodingが、 別マシンで動作している場合にはデフォルトでHextileが、 使われるようになっています。 オプションでエンコーディングを切り換えてみて、 どのエンコーディングが適しているかを試すことができます。
圧縮については、上のssh、zebedeeの使用、のところも御覧になってみてください。 sshは暗号化だけではなく、圧縮機能も提供しています。
Q59
ビューワ側でスクリーンの一部をキャッシュする、というのはどうでしょう?
-  
はい、効果があると思います。 ビューワ側にオフスクリーンのキャッシュを持たせ、 サーバはそこから スクリーンにデータをコピーするようにすることができるでしょう。 ですが、これを管理するためにはコードがかなり複雑になると思います。
なお、VNCにはすでにCopyRectプリミティブがありますので、 もうひとつのアプローチとしては、 スクリーン上に同じデータがあるなら、 再度送り出すのではなく、 スクリーンの一部をコピーするようにすることが考えられます。 ただ、この場合にも、 サーバ側でそのような領域を効率良く探しだせるようにするのは なかなか難しいと思います。 良い方法がありましたらぜひ試してみてください。 (8)
Q60
TCP/IPを使わないで、モデム直結でVNCを使うことはできますか?
-  
今はできません。ですがVNCは、 信頼性のある双方向コネクションであれば、 RS232、firewall、USB、modem、IrDA等の何でも、 その上で実行することは可能です。 ですが、現時点では、信頼性のある双方向コネクションとして TCP/IPを使っているだけのことです。 なんといっても便利ですし、どこでも使えますし、 接続するのも簡単ですから。
VNCはTCP/IPさえあればどこでも使えます。 TCP/IPは他のネットワークと同様に、 ダイアルアップネットワーキングがセットアップされていれば、 モデム経由でも使えます。 ですから、もし。インターネット/イントラネットを経由しないないで 直接2台のマシンを接続したいのでしたら、 一方のマシンにリモートアクセスサーバをセットアップして、 他方のマシンからダイアルインすればよいわけです。
Q61
VNCにはY2K問題はありますか?
-  
WinVNCとWindowsビューワについては、 2000年の境界上の日付でテストしましたが、 何の問題もありませんでした。 ですから、OSやBIOSに問題がなければ、 VNCについては何の問題もありません。 XベースのUnix用VNCサーバでは、 日付はログファイルへの書き込みに関してだけ使われていて、 日付において年が2桁で表記されています。 しかし、変更は簡単ですし、 そもそもログファイルは他のプログラムが読むものでもありませんので、 たいした問題にはならないでしょう。 Xvncの元になっているXFree86サーバについては Y2K問題は無いといわれています。これについては http://www.xfree86.org/FAQ/ を御覧ください(9)。 ですから、VNCコード自体については、VNCが動作するシステムに問題が 無い限りにおいてですが、Y2K問題はありません。
Q62
WinVNCを多くのマシンにインストールしたいのですが いい方法はありませんか?
-  
WinVNCをインストールするとパスワードを尋ねてきます。 いくつものマシンに、特に離れた場所にあるマシンに、 インストールするする場合には、これは結構面倒になるでしょう。 これは、あらかじめ、インストール先のマシンのレジストリに 暗号化されたパスワードを登録しておくことによって 回避することができます。つまり、
  • マスターマシンにWinVNCをインストールしてパスワードを設定しておきます。
  • 以下のレジストリ内容をコピーしてターゲットマシンにインストールします。 適当なレジストリユーティリティを使ってください。 通常プログラムとしてインストールする場合には
    HKEY_CURRENT_USER\Software\ORL\WinVNC3
    サービスとしてインストールする場合には
    HKEY_USERS\.DDEFAULT\Software\ORL\WinVNC3
    をコピーします。
  • VNCのファイル(通常はC:\Program Files\ORL\VNCにあります)を リモートマシンにコピーします。
  • サービスとしてインストールするなり、 スタートアップディレクトリに入れるなりします。
Q63
一台のWindowsサーバに複数のユーザが接続して、 ユーザ毎に別々のデスクトップを持つことはできますか? WinFrame、NTrigue、WTS等みたいに、です。
-  
できません。 WindowsNTにはマルチユーザサポートが含まれてはいますが、 GUIについてはサポートされていません。 Windowsのソースコード無しにはできませんし、 ソースコードはそうそう手に入るものでもありません。 Windows Terminal Server (WTS) でなら 複数のWinVNCを走らせることができます。 しかし、その場合にはWTSクライアントが接続されない限り、 何も起きませんので、これはあまり意味がないでしょう。 将来WTS-APIのドキュメントでも入手できれば 多少はましになるかも知れません。
サーバがUnixベースのものでしたら、何の問題もありません。 一台のマシン上でいくつでもVNCサーバを走らせることができます。
Q64
他に何かヒントはありますか?
-  
主にUnixを使っていて、たまにWindowsを使う必要があるもので、 UnixからVNC経由で机の下のPCにアクセスしたい、 という方がいらっしゃいます。
しかし、そのような場合には、WindowsからVNC経由で Unixにアクセスするようにした方がいいでしょう。 これは、主に、Windowsはサーバとして使うよりもクライアントとして 使う方が適しているからですし、また、PCのグラフィックカードは 大抵のUnix WSのものよりも高速に描画できるようになっているからです。 VNCでなら、どのようなサイズ、色数のセッションでも作することができます。
どうしてもWindowsが嫌いだ、というのなら VNCのデスクトップをローカルマシンのスクリーンと同じサイズにし、 タスクバーを'AutoHide'(自動的に隠す)にすれば、 X端末を使っているような気分に浸れるでしょう。 そうしておいて、必要に応じてスタートメニューを呼び出して PowerPointなり何なりを起動すればいいのです。 また最新のWindowsビューワではフルスクリーンモードが サポートされていますので、AutoHideを設定しないでも大丈夫です。
Q65
ダウンロードページの「organization」のスペルが間違っています!
-  
間違っていません。UK(イギリス)ではこう綴るのです。 実際のところはどちらの綴りも使うのですが、 OEDに何と書いてあっても 's'のスペルの方がよく使われています。 さて、「misspelt」といえば...

Compiling the Source

Q66
WinVNCをコンパイルしようとしたら、 コンパイラがファイルが無い!といってきます。
-  
コンパイルする時には、 No_CORBAコンフィギュレーションでコンパイルしてください。 そうでないと、 研究所の内部専用版にしか含まれていないファイルを取り込もうとします。 もし、そうしてもまだvncControl.idlでエラーが出たなら、 それはMicrosoftのせいです。 これは、Visual C++ 5でビルドしたプロジェクトを Visual C++ 6でインポートする際のバグです。 IDLファイルは不要ですし、そもそも含んでいません。 プロジェクトから消してしまってください。
Q67
私のところのプラットフォームでVNCを コンパイルしようとしてもうまくいかないのですが...
-  
contribs ページはチェックされましたか? 各種のプラットフォームでVNCをビルドするためのヒントが多数寄せられています。 あなたのプラットフォームについて書いてなくても、 何かのヒントになるでしょう。