PCのリモートメンテナンスや外出先から家のPCを遠隔操作したりするのに UltaraVNC をメインに使っています。
フリーソフトだし、軽いし、操作しやすいし、ミラードライバー(MirrorDriver)と組み合わせれば操作レスポンスもいいので気に入っています。このUltraVNCを仕事上、何台ものパソコンにインストールすることがあるのですが、インストールにひと手間かかるので思い切ってバッチファイル作ってみたのでメモ。

このバッチファイルでできること
今回作るのは遠隔操作される側のPCに UltraVNC のサーバーの機能のみをインストールするバッチファイルですが、ただインストールするだけではなく、初期設定などを含めて以下のことを同時に行います。
- UltraVNCのインストール
- 日本語化パッチの適用
- ミラードライバー(MirrorDriver)のインストール
- ファイアウォールの許可
これをバッチファイルで全自動で行います。
事前に用意しておくもの
バッチファイルでは以下のファイルを使用します。たくさんあってちょっと面倒ですが、事前にダウンロードしておいてください。
- UltraVNCのインストーラー
- WinVNC.exe
- MirrorDriver(ミラードライバー)
- 日本語化パッチ
- Ultravnc.ini
- INFファイル
- Devcon.exe(デブコン)
それぞれの入手方法とダウンロード先
UltraVNCのインストーラー
x64版とx86版の両方をダウンロードしてください。現在の最新バージョンは 1.2.2.2 ですが、日本語化パッチがうまく適用できたのが 1.2.1.6 用だったので、ここでは 1.2.1.6 をダウンロードします。
対応しているOSは Windows 10/8.1/8/7/Vista/XP、Windows Server 2012 R2/2012/2008 R2/2008/2003 R2 で、ほぼどの Windows に対応しています。
バージョン 1.2.1.6
ダウンロードリンク x64 https://www.uvnc.eu/download/1216/UltraVNC_1_2_16_X64_Setup.exe
x86 https://www.uvnc.eu/download/1216/UltraVNC_1_2_16_X86_Setup.exe
winvnc.exe
winvnc.exeはUltraVNCのサーバー本体です。上記のインストーラーで winvnc.exe はインストールされるのですが、日本語化パッチが対応していないので、ここで別途日本語化に対応した winvnc.exe をダウンロードして用意します。これを後で Program Files にインストールされた winvnc.exe と置き換えて使います。これもバージョンは 1.2.1.6 を使用します。
バージョン 1.2.1.6
ダウンロードリンク x64 https://support1.uvnc.com/download/1216/uvnc_1216_X64.zip
x86 https://support1.uvnc.com/download/1216/uvnc_1216_W32.zip
MirrorDriver
ミラードライバーは描画をハードウェア処理するドライバーで、操作される側に入れると操作する側のレスポンスが軽快になります。
バージョン 1.0022
ダウンロードページ [http://www.uvnc.eu/download/driver.zip
http://support1.uvnc.com/download/UVNC_MD_SDK.zip
どちらのリンクでも同じものがダウンロードできます。解凍すれば、これ一つに x64用 と x86用 の両方が入っています。
インストール後はデバイスマネージャーを開くを以下のように表示されます。

日本語化パッチ
日本語化パッチは日本語化工房さんのページで配布されています。UltarVNCサーバーの設定メニューを英語から日本語に変更してくれるものです。これもバージョン 1.2.1.6 用をダウンロードします。
バージョン 1.2.1.6
ダウンロードページ https://www.nihongoka.com/jpatch_main/ultravnc/ultravnc1216_jp/
ダウンロードリンク https://www.nihongoka.com/wp_files/ultravnc1216_jp.zip
解凍すると、サーバー用 と ビューワー用 のそれぞれ x64用 と x86用 が入っています。
ultravnc.ini
ultravnc.ini はUltraVNCをインストールしたPCにある UltraVNCサーバ の設定ファイルです。これを用意しておけば、インストールと同時に設定ができるので、インストール後の設定を手動で行う作業を省くことができます。例えば接続パスワードや壁紙を省く設定などを統一できます。ultravnc.ini を用意する方法は2つあります。
UltraVNCがインストールされているPCから取り出す方法 ultravnc.iniはUltraVNCがインストールされているPCがあれば以下の場所の保存されています。
C:\Program Files\uvnc bvba\UltraVNC\ultravnc.ini

手動で作成する方法 ultravnc.ini はメモ帳などで作成することもできます。

例えば、画像と同じようなセッティングの場合は以下のようになります。
認証パスワードは暗号化されたものを入れないといけないので、同じパスワードが設定されているUltraVNCがインストールされているPCからコピーするか、後から設定するために空にしておくなどが必要です。ちなみにパスワードは「1234567890」を設定したときのものです。
[ultravnc]
passwd=F0E43164F6C2E37377
passwd2=F0E43164F6C2E37377
[Permissions]
[poll]
TurboMode=1
PollUnderCursor=0
PollForeground=0
PollFullScreen=1
OnlyPollConsole=0
OnlyPollOnEvent=0
MaxCpu=40
EnableDriver=1
EnableHook=1
EnableVirtual=0
SingleWindow=0
SingleWindowName=
[admin]
UseRegistry=0
MSLogonRequired=0
NewMSLogon=0
DebugMode=0
Avilog=0
path=C:\Program Files\uvnc bvba\UltraVNC
accept_reject_mesg=
DebugLevel=0
DisableTrayIcon=0
rdpmode=0
LoopbackOnly=0
UseDSMPlugin=0
AllowLoopback=1
AuthRequired=1
ConnectPriority=0
DSMPlugin=
AuthHosts=
DSMPluginConfig=
AllowShutdown=1
AllowProperties=1
AllowEditClients=1
FileTransferEnabled=1
FTUserImpersonation=1
BlankMonitorEnabled=1
BlankInputsOnly=0
DefaultScale=1
primary=1
secondary=0
SocketConnect=1
HTTPConnect=1
AutoPortSelect=1
PortNumber=5900
HTTPPortNumber=5800
IdleTimeout=0
IdleInputTimeout=0
RemoveWallpaper=1
RemoveAero=1
QuerySetting=2
QueryTimeout=10
QueryAccept=0
QueryIfNoLogon=1
InputsEnabled=1
LockSetting=0
LocalInputsDisabled=0
EnableJapInput=1
kickrdp=0
clearconsole=0
[admin_auth]
group1=
group2=
group3=
locdom1=0
locdom2=0
locdom3=0
INFファイル
INFファイルはUltaraVNCをどのようにインストールするかを設定するファイルです。例えば、GUIでインストールするときにサーバーまたはビューワーのみか、フルインストールなどを選択したり、サービスの登録をするかなどの設定をを行いますが、INFファイルで指定しておけば、そのとおりにインストールでできます。このファイルを用意する方法は2つあります。

コマンドから起動したインストーラーから書き出す 以下のように、 SAVEINF=“c:\server_only_install_setting.inf” といったパラメーターを加えてコマンドプロンプトからUltraVNC.exeを起動し、GUIでインストールするとGUIで設定したとおりの内容でINFファイルが書き出されますので、それをコピーして使います。
c:\UltraVNC_1_2_16_X64_Setup.exe SAVEINF="c:\server_only_install_setting.inf"
手動で作成する メモ帳で作成することもできます。上記の画像のようにサーバーのみのインストールと、サービスに登録、起動時にサービスを実行するとした場合は以下のようになります。
[Setup]
Lang=en
Dir=C:\Program Files\uvnc bvba\UltraVNC
Group=UltraVNC
NoIcons=0
SetupType=server
Components=ultravnc_server
Tasks=installservice,startservice
Devcon.exe
Devcon(デブコン)はハードウェアのデバイスドライバをコマンドで Windows にインストールするためのツールで、MirrorDriver をインストールするために使います。x64版とx86版の両方をダウンロードしてください。
バージョン 10.0.17134.1
ダウンロードページ x64
上記の圧縮ファイルを解凍しただけでは Devcon.exe は出てきません。解凍したフォルダの中から以下のファイルを探してください。それを devcon.exe に名前を変更して取り出ます。
x64用 filbad6e2cce5ebc45a401e19c613d0a28f ←これをdevcon.exeにリネーム
x86用 fil5a9177f816435063f779ebbbd2c1a1d2 ←これをdevcon.exeにリネーム
Decon_x64、Devcon_x86というフォルダを作って、それぞれのフォルダにdevcon.exeを移動してください。残った他のファイルは不要です。
ダウンロード後のフォルダ・ファイル階層
これで必要なものが全部整いました。今回のバッチファイルで使うファイルは赤枠のようにフォルダを作り、階層を以下のようにしました。

バッチファイル
以下のソースをメモ帳に貼り付け、サイレントインストール.batなど適当に名前を付けて、ダウンロードしたファイルと同じ階層に保存して実行してください。
@echo off
setlocal enabledelayedexpansion
<br>
echo.
echo =========================================
echo UltraVNC をインストールします。
echo Windows 7/8.1/10(サーバーのみ)
echo =========================================
echo.
<br>
pause
<br>
echo.
echo OSの環境を確認しています。
echo.
echo -----------------------------------------
ver
echo %PROCESSOR_ARCHITECTURE%
echo.
echo -----------------------------------------
<br>
:: セットアップに必要なファイルのパス
if %PROCESSOR_ARCHITECTURE% equ x86 (
set SETUPEXE=%~dp0インストーラー\UltraVNC_1_2_16_X86_Setup.exe
set VNCEXE=%~dp0bin\uvnc_1216_W32\win8\winvnc.exe
set LANGEXE=%~dp0日本語化パッチ\ultravnc1216_jp\=ultravnc1216_winvnc_win8_w32_jp.exe
set MV2INF=%~dp0Mirror_Driver_1.0022\vista\driver\mv2.inf
set DEVCONEXE=%~dp0Devcon\x86\devcon.exe
goto MIRROR_DRIVER
) else if %PROCESSOR_ARCHITECTURE% equ AMD64 (
set SETUPEXE=%~dp0インストーラー\UltraVNC_1_2_16_X64_Setup.exe
set VNCEXE=%~dp0bin\uvnc_1216_X64\win8\winvnc.exe
set LANGEXE=%~dp0日本語化パッチ\ultravnc1216_jp\ultravnc1216_winvnc_win8_x64_jp.exe
set MV2INF=%~dp0Mirror_Driver_1.0022\vista64\driver\mv2.inf
set DEVCONEXE=%~dp0Devcon\x64\devcon.exe
goto MIRROR_DRIVER
)
echo.
echo OSの環境が確認できませんでしたので終了します。
echo.
goto EXIT
<br>
:MIRROR_DRIVER
:: ミラードライバーをインストール
echo.
echo Mirror Driver がインストールされている確認しています。
"%DEVCONEXE%" find mv_hook_display_driver2 | find "No matching devices found."
if %ERRORLEVEL% equ 0 (
echo.
echo Mirorr Driver はインストールされていません。
echo.
echo Mirorr Driver をインストールしています。
echo.
"%DEVCONEXE%" install "%MV2INF%" mv_hook_display_driver2
echo.
goto SETUP
) else (
echo.
echo Mirror Driver はインストール済みです。
goto SETUP
)
<br>
:SETUP
:: UltraVNCをインストール
:: サービスが存在していれば停止
sc query uvnc_service | find "RUNNING" > nul
if %ERRORLEVEL% equ 0 (
echo.
net stop uvnc_service
)
<br>
:: Windowsファイアウォール ルール重複防止のため事前にルールを削除
netsh advfirewall firewall delete rule name="vnc5800" > nul
netsh advfirewall firewall delete rule name="vnc5900" > nul
netsh advfirewall firewall delete rule name="winvnc.exe" > nul
<br>
echo UltraVNC をインストールしています。しばらくお待ちください。
"%SETUPEXE%" /SP- /VERYSILENT /LOADINF="%~dp0構成ファイル\server_only_install_setting.inf" /NORESTART
<br>
echo.
net stop uvnc_service
<br>
:KANKYO_SETTEI
:: 管理者パスワード、日本語キーボードの有効化、壁紙をAeroを無効にするなど、設定ファイルを上書き
echo 環境設定ファイルを上書きしています。
echo F | xcopy /Y "%~dp0構成ファイル\ultravnc.ini" "%systemdrive%\Program Files\uvnc bvba\UltraVNC\ultravnc.ini" > nul
<br>
:LANG
:: 日本語化パッチの適用
echo.
echo 日本語化パッチを適用しています。
rem 日本語化対応のVNC.exeにインストール済みの本体に上書き
echo F | xcopy /Y "%VNCEXE%" "%systemdrive%\Program Files\uvnc bvba\UltraVNC\winvnc.exe" > nul
rem 日本語化パッチをコピー
echo F | xcopy /Y "%LANGEXE%" "%systemdrive%\Program Files\uvnc bvba\UltraVNC\ultravnc_winvnc_jp.exe" > nul
rem 日本語化実行
"%systemdrive%\Program Files\uvnc bvba\UltraVNC\ultravnc_winvnc_jp.exe" > nul
<br>
echo.
net start uvnc_service
<br>
:FIREWALL
echo ファイアウォールを設定しています。
<br>
:: UltaraVNC関連のルール ドメイン、プライベート、パブリック すべて許可
netsh advfirewall firewall set rule name="vnc5800" profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="vnc5900" profile=private,public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="vnc5900" profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="vnc5900" profile=private,public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=UDP profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=UDP profile=private,public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=TCP profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=TCP profile=private,public new enable=yes profile=any > nul
<br>
:: 不要なルールは無効にしておく
netsh advfirewall firewall set rule name="vnc5800" profile=private new enable=no > nul
netsh advfirewall firewall set rule name="vnc5900" profile=private new enable=no > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=UDP profile=private new enable=no > nul
netsh advfirewall firewall set rule name="winvnc.exe" protocol=TCP profile=private new enable=no > nul
<br>
:: Ping 応答要求関連のルール ドメイン、プライベート、パブリック すべて許可
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)" profile=private,public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)" profile=public new enable=yes profile=any > nul
netsh advfirewall firewall set rule name="ファイルとプリンターの共有 (エコー要求 - ICMPv6 受信)" profile=private,public new enable=yes profile=any > nul
<br>
echo.
echo UltraVNCのインストールが完了しました。
echo.
<br>
:EXIT
endlocal
pause
exit
実行の際の注意
管理者として実行しないとファイルのコピーや devcon.exe 実行の段階でエラーになります。

また、実行途中で以下のような画面が出ます。これは日本語化パッチ適用時の段階で出ます。このダイアログが出たら [OK] を押してください。[OK] を押さないと次に進むことができません。

他のサイトで見つけたソースの参考
その1
@echo off
::remove old version if it exists
"%systemdrive%\Program Files\UltraVNC\unins000.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
rmdir /S /Q "%systemdrive%\Program Files\UltraVNC"
<br>
::Copy preconfigured settings file into place
mkdir "%systemdrive%\Program Files\UltraVNC"
copy %systemdrive%\UVNC\UltraVNC\ultravnc.ini "%systemdrive%\Program Files\UltraVNC\"
<br>
:: Install UltraVNC Server
%systemdrive%\UVNC\UltraVNC_1.0.9.6.1_Setup.exe /SP- /VERYSILENT /NORESTART /LOADINF=%systemdrive%\UVNC\install_server.inf
<br>
::Install the UVNC Server Service
"%systemdrive%\Program Files\UltraVNC\winvnc.exe" -install
<br>
::Load (or reload) the UVNC Mirror driver
%systemdrive%\UVNC\UVNCDriver\devcon.exe install %systemdrive%\UVNC\uvncdriver\mv2.inf mv_hook_display_driver2
<br>
::Wait for processes to complete
@ping 1.1.1.1 -n 1 -w 5000
<br>
::Install UltraVNC Viewer
%systemdrive%\UVNC\UltraVNC_1.0.9.6.1_Setup.exe /SP- /VERYSILENT /NORESTART /LOADINF=%systemdrive%\UVNC\install_viewer.inf
<br>
::Clean up install files
rmdir /S /Q %systemdrive%\UVNC
del %0
その2
::Old version removal if it exists
"%systemdrive%\Program Files\UltraVNC\unins000.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
rmdir /S /Q "%systemdrive%\Program Files\UltraVNC"
<br>
::UVNC Installation
if not exist %systemdrive%\UVNC\ md %systemdrive%\UVNC\
xcopy \\"your share"\UVNC %systemdrive%\UVNC\ /y /s
<br>
if %PROCESSOR_ARCHITECTURE% == AMD64 goto ver_x64
if %PROCESSOR_ARCHITECTURE% == x86 goto ver_x86
<br>
:ver_x64
%systemdrive%\UVNC\UltraVNC_X64_Setup.exe /SP- /VERYSILENT /NORESTART /LOADINF=%systemdrive%\UVNC\setup.inf
goto serv
<br>
:ver_x86
%systemdrive%\UVNC\UltraVNC_X86_Setup.exe /SP- /VERYSILENT /NORESTART /LOADINF=%systemdrive%\UVNC\setup.inf
<br>
:serv
::UVNC Server Service Installation
cacls "%systemdrive%\Program Files\UltraVNC" /T /E /G Everyone:F
copy "%systemdrive%\UVNC\ultravnc.ini" "%systemdrive%\Program Files\UltraVNC"
"%systemdrive%\Program Files\UltraVNC\winvnc.exe" -install
<br>
::UVNC Mirror driver installation
certutil.exe -addstore "TrustedPublisher" %systemdrive%\UVNC\uvnc.cer
<br>
ver | find "XP" > nul
if %ERRORLEVEL% == 0 goto xp
<br>
ver | find "6.1" > nul
if %ERRORLEVEL% == 0 goto win7
<br>
:xp
start %systemdrive%\UVNC\driver\xp\install.bat
goto exit
<br>
:win7
if %PROCESSOR_ARCHITECTURE% == x86 start %systemdrive%\UVNC\driver\vista\install.bat
<br>
<br>
if %PROCESSOR_ARCHITECTURE% == AMD64 start %systemdrive%\UVNC\driver\vista64\install.bat
<br>
:exit
<br>
::Timeout
PING -n 60 127.0.0.1>nul
<br>
::Install files clean up
rmdir /S /Q %systemdrive%\UVNC
<br>
del %0