UltraVNCをWindows Server 2012で使うためのメモ

UlraVNCをWindows Server 2012を入れる際にちょっとコツがあったので、ここでメモ

UltraVNC

昔の私のホームページでは、メイン記事だったVNCですが、いまだに使っとります。
最初期のVNCは正直キワモノ扱いでしたが、
その後Linuxリモートコントロールの標準になったりしていつのまにかメジャーになってしまいました。

今回、某事情でwindows Server 2012にUltraVNCを入れたのですが、
Windows8が正式対応しているし、ベースが同じServerOSでもちゃんと動くようなことがかいてあったんですが、そこではまりました。

Windows Server 2012にUltraVNC の最新版1.1.9.6 + addonsをすべて入れると、
VNC Viewerからの Ctl+Alt+DEL入力や、Windowsキー入力がうまくできなかったり、
連続したキー入力が遅くなったりして、動作が安定しなかったのでいろいろ試行錯誤。
(グーグル先生に聞いてみても、うまく情報が見つからなかった。)

 

インストールについて

Windows Server 2012 は64bit OSなので、使用するインストーラは以下を使いました。

www.uvnc.com/downloads/ultravnc/105-download-ultravnc-1196.html

UltraVNC本体
UltraVNC_1_1_9_X64_Setup.exe

UltraVNC Addons
UltraVNC_1_1_9_X64_Addons.exe

 

とりあえず、まず、UltraVNC本体をインストール

ここではデフォルトのFull Installation で問題ないようです。

UltraVNC_Setup

私はサービスとして動かしたいので、以下のようにチェックしました。

UltraVNC_Addons_Setup

問題はAddonsのほうで、
全部インストールすると、インストールエラー&VNC接続時の動作が不安定になります。

UltraVNC_Addons2_Setup

とりあえず試行錯誤した結果、上のように1つ目と5つ目にチェックを入れないほうが良いようです。

1つ目の「Install Mirror video driver, better perforance, diewctx not supported」は
Windows2012(Windows8)用のMirrorドライバが無いのでインストール時にエラーが出るのを防ぐため。(代わりに、4つ目のW8hookがあるので、問題はないはず・・・)

2つ目の「Add plugins used to encypt data between server and viewer」は
暗号化通信をする予定がなかったので試していません。

5つ目の「W8keys (Windows8), handle special keys like alt-tab or win-x」は
これがキー関係で不安定になる原因っぽいので、これを除外します。

今回「W8keys」をインストールしていないため、Alt+TabやWin-X等の一部特殊キーがきかなくなりますが、安定動作には変えられません。

なお、クライアント側で「scroll Lock」をON状態状態にすると、VNC Viewerのフォーカスされている間、Winキーが、VNC接続先サーバ側に転送されます。
この状態であれば、以下のようなショートカットが使用できます
(ALT+TabやALT+Space、Win-X、Win-Iが送信されないのは確認済み)。。

  • Break/Pause(VNC Viewerのフルスクリーン/解除)
  • PRINT-Screen(VNC Viewerの全画面更新)
  • Win(スタート画面を表示または非表示にする)
    およびコンビネーションキー(以下は少なくとも確認できたもの)
    Win+R(ファイル名を指定して実行のWindows表示)
    Win+E(エクスプローラを起動してマイコンピュータ表示)
    Win+D(デスクトップを表示または非表示にする)
    Win+C(チャームを開く)
    その他Win+キーのショートカットはこちらを参照してください

 

 

 

キー入力不具合対策方法(主に日本語キーボード対策)

VNCで接続後に”¥”(円マーク)が”?”で入力される場合は、
タスクトレイのVNCアイコンの「Admin Properties」からサービス設定画面を開いて
「Alternate keybord method」にチェックするか、

uvnc_server_properties

C:\Program Files\uvnc bvba\UltraVNC\uvnc_settings.exe を起動して、
「Input/FileTransfer」->「Japanese (v102 keyboard method)」にチェックしてみてください。
(どちらか1つをやればOKです)

uvnc_settinfs

 

また、UltraVNC Viewer側にも、オプションに「Japanese keyboard」があるので、チェックしておきましょう。これで、クライアント側の全角/半角キーが正しくサーバ側に送信できます。

uvnc_viewer_option

 

 

UAC無効設定時のCtl+Alt+DEL入力する為の設定変更

また、Vista以上のOSでは、Ctl+Alt+DELをViewerから入力するためにはUACが有効である必要があるようです(以下のようなダイアログが表示されます)。

UltraVNC_uac_error

一応、(ログオン画面でも)スクリーンキーボードを起動して「Ctrl」「Alt」「Del」を順次クリックで入力すればログオン出来ますが、これでは不便です。UACが無効状態でもCtl+Alt+Delを入力するためには、次の手順でグループポリシーを変更する必要があります。

ファイル名を指定して実行から「gpedit.msc」でローカルグループポリシーエディタを起動。
コンピュータの構成 -> 管理用テンプレート -> Windowsコンポーネント -> Windowsログオンのオプション から
「ソフトウェアのSecure Attention Sequenceを無効または有効にする」をクリック
以下のように「有効」にして、オプションに「サービスとコンピュータの簡単操作アプリケーション」を指定しまう。

UltraVNC_uac_setting

これで、UACが無効状態でも、ViewerからCtrl+Alt+Delが入力できるようになります。

 

日本語化パッチについて

日本語パッチもユーザにて作成されています。

http://blog.livedoor.jp/blackwingcat/archives/925200.html

ここの0.63が、1.1.9.6ベースの日本語化バージョンパッチとなります。
(パッチを当てると、次のような感じで日本語化されます。)

uvnc_server_properties_JP

基本的に、64bit版ならサーバのUltraVNCのインストール先(C:\Program Files\uvnc bvba\UltraVNC\)
に、解凍したuvncj063\フォルダ以下のファイル+uvncj063\x64以下のファイルを上書きしたあとでVNC再起動でOKですが、以下の点に注意してください。

  • 「W8keys」機能に対応するファイルも含まれているため、「uvnckeyboardhelper.exe」だけはコピーしないでください。キー入力関係が不安定になるようです。
    (コピーしてしまったら、uvnckeyboardhelper.exeの削除でOK)
  • 「uvnc_settings.exe」を上書きすることで、VNCセッティング画面も日本語化されますが、uvncj063のexeでは、新方式(複数ドメイン認証)での「Microsoft ログオングループの設定」(Configure MSLogon Groups)が開けない現象が発生しました。
    ただタスクトレイのVNCアイコンの「管理プロパティ」からでは設定できるのでこちらを使用するか、オリジナルのuvnc_settings.exeをuvnc_settings_us.exeとかにリネーム後にuvnc063\以下を上書きする方法でオリジナルを残して、ユーザ設定時のみオリジナルを使うのも手です。
    (このやり方でも、タスクトレイのVNCアイコンのほうはきちんと日本語化されています。)

uvnc_settings_JP

クライアント側は、解凍したuvnc063をそのまま使えば問題ありません。

uvnc_viewer_option_JP

 

これで、今のところ安定して使えてます。
特にVNC接続時のドメインユーザでの認証とか、Viewerの自動縮小表示とかは非常に便利です。

 

LinuxからWMI経由でWindowsの情報を取得/プログラム実行してみる

Linuxから、WMI経由でWindowsの情報を取得できるツールがあったので試してみた。

これと、ZABBIXとうまく連携できれば、(SNMP経由でない)本当のエージェントレスができそう。

インストール方法は以下の通り

ここで、以下のメッセージが出る場合は、
/bin/sh: line 2: ./configure: そのようなファイルやディレクトリはありません
yumで autoconfをインストールして、再度makeします。

makeには結構時間かかります。

make install前に動作確認します。

 

試しに、情報を取得してみます。

Windowsの情報を取得

特定のプロセスの情報を取得(EpgTimerSrv.exe)

特定のプロセスの情報を取得(値の行のみ)

動作確認したら、インストールします。

RPMもあるっぽい(けど、まだ試していません)
http://www.harumaki.net/2012/05/09/centos%E3%81%ABwmi%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%82%8B/

ちなみに、ファイルの情報を取得する場合は以下の様にします。

なぜか、\ -> \\\に変換しないと、エラーになります(\\ではダメ)。
それと、ファイルパスに2バイト文字を含むような場合も失敗しますが、こちらはまだ未解決。
フォルダ単位で各ファイル全部をWMIで取得して後からGrepで文字列抽出するのならいけましたが、とりあえずこれで。

 

なお、接続先がWindows Vista,2008以降だとセキュリティーがきびしくなっているので、
UACを無効にするか、ローカルのAdministratorもしくは、管理者権限を持ったドメインユーザで接続する必要があるようです。

UACはGUIで設定するか、レジストリを変更して再起動します。

UACを無効にできるのであれば一番早いですが、そのままだと管理者権限を持ったローカルユーザで接続しても接続を拒否られる場合は、以下のレジストリを作成・変更してみてください。
再起動は不要らしいです。

 

その他接続できない場合は次の点を確認してみてください。
(Administratorsグループのユーザであれば、Firewall以外はデフォルトでは大丈夫なはずですが・・・)

・Firewallの設定

WindowsFireWallが有効の場合は以下の項目を有効にします。
[標準プロファイル]or[ドメインプロファイル]
・[Windowsファイアウォール:リモート管理の例外を許可する](2003)
・[Windowsファイアウォール:着信リモート管理の例外を許可する](2008以降)

・サービスの起動確認
Windows Management Instrumentationサービス(サービス名:WinMgmt)が
起動しているかの確認

・DCOMのアクセス権限(接続元)

dcomcnfg.exeを起動し、
コンポーネントサービス->コンピュータ->マイコンピュータのプロパティーを開き、
・[既定のプロパティ]タブを選択して,[このコンピュータ上で分散COMを有効にする]が
チェックされているか確認する。

 

・DCOMのアクセス権限(接続先)

dcomcnfg.exeを起動し、
コンポーネントサービス->コンピュータ->マイコンピュータのプロパティーを開き、
・[既定のプロパティ]タブを選択して,[このコンピュータ上で分散COMを有効にする]が
チェックされているか確認する。
・[COMセキュリティ]タブを選択して、[制限の編集]から接続ユーザで
アクセス許可されているかを確認する。

 

・WMIの名前空間のセキュリティーの確認

wmimgmt.mscを起動し、WMIコントロールでプロパティーを表示し、
セキュリティタブのRoot->CIMV2のセキュリティーを確認します。
接続ユーザでアクセス許可されていることを確認します。
どうしてもうまくいかない場合でUACのセキュリティ機能が有効の場合は、
ユーザー自身に対して設定するか、
UsersグループとAdministratorsグループ以外のユーザーが属するグループに対して
設定してみてください。

 

 

 

なお、一緒に、winexeというツールもインストールされます。
これは、Linux側のコマンドラインからWindows上でプログラムを実行するものです。
基本的には、以下のコマンド実行できます。

ただ、実行時以下のようにエラーが出ることがあります。

その場合は、対象のWindows側で、以下のコマンドを実行しておけばよいようです。(参考:http://community.zenoss.org/people/chitambira/blog)

ちなみにこれ、バグだそうで、
winexe/service.c ファイルの以下の部分を修正して、
再度make&make installすれば治るようです。

実際やってみたら、ちゃんと自動でWindows側にサービスが登録され、リモート実行できるようになりました。

また、以下のようにメッセージが出た場合は、

いったん、次のコマンドを入れると解決できる場合もあるそうです

なお、上記winexeはバージョン0.80ですが、、最新版(1.00)が出ているんので、必要があればこちらを
http://sourceforge.net/projects/winexe/files/

インストール方法はこちらを参考に

winexe(1.00)のインストール

BSoD時のダンプファイルを解析してくれるBlueScreenView便利

うちの録画PCのうちの一台で、頻繁に再起動するので、
「BlueScreenView」というツールで原因を調べてみた。

ブルースクリーン発生時に出力されるダンプファイルを解析して、
原因となったと思われるモジュールを教えてくれます。

http://www.nirsoft.net/utils/blue_screen_view.html

本体以外にも、日本語化ファイルもダウンロードして、
同じフォルダにコピーすれば、メッセージも日本語化されます。

bluescreenview bluescreenview2

このツールが便利なのが、
今までのブルースクリーン時のメッセージを再現してくれたりもするので、
Ctrl+Sでメッセージを止めて書き写したり、メッセージを読むたびにわざわざエラーを再現させるみたいな真似をしなくてもよいのがGoodです。

で、今回の場合、再起動の原因は、ほとんどの場合
HDTV_PX_W3U2_BDA.sysが原因とのこと。

このドライバは、Plex製デジタルチューナ(地x2,BSCSx2)のためのもので、
確かにこのデバイスを使い始めてから再起動し始めたから、怪しいとは思っていたけどやっぱり・・・・・
WSS2008R2で使っていた時は再起動しなかったのだけどね。

ということで、ドライバの最新版が無いかを探してみたら、やっぱりあった。

http://www.plex-net.co.jp/product/pxw3u3_download.html

(px-w3u3用のダウンロードページだけど、中にW3U2用のドライバも入っているので問題なし)

2013年10月に Ver.1.1が出ていた模様。
てか、修正内容が「※BSoDの問題を修正、安定性の向上」・・・・・

よしこれで様子を見てみましょう。