GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の最新情報をお届けします。製品のTIPSや発売情報、イベントのお知らせなどをいち早く発信中です。

Microsoft RemoteAppで業務アプリを仮想化して使う

2018年6月27日に以下の製品の運用環境のサポート対象に「Microsoft RemoteApp」(以下RemoteApp)を追加しました。

RemoteAppに対応している製品の詳細はこちらをご覧ください。

RemoteAppは、Windows Serverのリモート デスクトップ サービス(旧称:ターミナルサービス)が提供する機能の1つで、ホストで実行されるアプリケーションの画面だけを転送してクライアントのデスクトップ上に表示・操作させる、アプリケーションの仮想化を実現する機能です。

RemoteAppのイメージ

今回はHyper-V上に構築したWindows Server 2016の環境を使って、InputManPlus for WPFのサンプルアプリケーションをRemoteAppで配信してみたいと思います。


Active Directory環境上での構築が推奨

RemoteAppの環境は、Active Directory(ドメイン)環境上に構築することが推奨されており、非ドメイン環境ではリモート デスクトップ サービスのインストールすら制限されてしまいます。

しかし、Active Directoryとアプリケーションは別々のサーバーで運用したいということも多々あるかと思います。

非ドメイン環境でのRemoteAppの設定方法は、Microsoftの公式ブログに方法が紹介されていたので、今回はこれに沿って非ドメイン環境での動作を試してみます。


リモート デスクトップ セッション ホストのインストール

[検証環境]

  • ホスト側
    • OS:Windows Server 2016 (Hyper-V)
  • クライアント側
    • OS:Windows 10

ホスト側のWindows ServerでWindows PowerShellを起動し、以下コマンドを順に実行し、 [リモート デスクトップ セッション ホスト] 役割サービスと、 [ライセンス診断] ツールをそれぞれインストールします。

> Add-WindowsFeature -Name RDS-RD-Server
> Add-WindowsFeature -Name RSAT-RDS-Licensing-Diagnosis-UI

機能のインストールが完了したら、システムを再起動します。

なお、RemoteAppの環境を構築する場合、GUI環境が必要なので、OSインストール時にデスクトップエクスペリエンスオプションを選択してインストールするか、後で追加でインストールしてください。今回はOSインストール時にデスクトップエクスペリエンスを有効にしていたので、このまま進みます。


リモート デスクトップ ライセンスのインストール、ライセンス サーバーの設定

リモートデスクトップサービスを利用するには、本来であればホストに適切なライセンスの設定が必要ですが、 [リモート デスクトップ セッション ホスト] 役割サービスのインストール後120日間は猶予期間としてライセンス無しで利用できます。

今回は動作確認のための一時利用なので、このライセンスサーバーの設定の手順はスキップします。

商用で長期利用する場合は、前述のMicrosoftの公式ブログに記載の方法で設定を行ってください。


アプリケーションの配置と登録

次にRemoteAppで配信するアプリケーションをホスト環境に配置します。今回はInputManPlus for WPFに含まれる「Functionsプロジェクト」サンプルをあらかじめビルドし、ホスト環境にコピーします。

f:id:GrapeCity_dev:20180627105926p:plain

次にレジストリにRemoteAppで公開するアプリケーションの登録を行います。今回はimwpfsampleという名前を付けてレジストリキー登録します。
注意:レジストリに不正な値を書き込んだ場合、システムに重大な障害を及ぼす可能性があります。システムのバックアップをとるなど、操作は自己の責任で慎重に行ってください。

> $regPath = “HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications”
> New-Item -Force $regPath -Name imwpfsample
> New-ItemProperty $regPath\imwpfsample -Name CommandLineSetting -Value 0 -PropertyType Dword
> New-ItemProperty $regPath\imwpfsample -Name Name -Value Paint -PropertyType String
> New-ItemProperty $regPath\imwpfsample -Name Path -Value C:\work\GrapeCity.WPF.InputMan.Sample.Functions.exe -PropertyType String
> New-ItemProperty $regPath\imwpfsample -Name RequiredCommandLine -PropertyType String
> New-ItemProperty $regPath\imwpfsample -Name SecurityDescriptor -PropertyType String
> New-ItemProperty $regPath\imwpfsample -Name ShowInTSWA -Value 1 -PropertyType Dword

レジストリエディタで登録後のレジストリキーを見るとこのようになります。

f:id:GrapeCity_dev:20180627153751p:plain


リモートアクセスの許可

次にリモートアクセス可能なユーザーをホスト側に設定します。コントロールパネルから「リモートアクセスの許可」を選択します。

f:id:GrapeCity_dev:20180627154950p:plain

「このコンピュータへのリモート接続を許可する」を選択し、「ユーザーの選択」をクリックします

f:id:GrapeCity_dev:20180627155019p:plain:w500

許可するユーザーを設定します。今回はあらかじめ作っておいたtaroというユーザーを許可リストに加えます。

f:id:GrapeCity_dev:20180627155432p:plain:w500


rdpファイルの作成

最後に接続のためのrdpファイルを作成します。テキストエディタに以下を貼り付けtest.rdpとして保存します。アプリケーション名には先ほど設定したレジストリキーimwpfsampleを指定します。

redirectclipboard:i:1
redirectposdevices:i:0
redirectprinters:i:1
redirectcomports:i:1
redirectsmartcards:i:1
devicestoredirect:s:*
drivestoredirect:s:*
redirectdrives:i:1
session bpp:i:32
prompt for credentials on client:i:1
span monitors:i:1
use multimon:i:1
remoteapplicationmode:i:1
server port:i:3389
allow font smoothing:i:1
promptcredentialonce:i:1
authentication level:i:2
gatewayusagemethod:i:2
gatewayprofileusagemethod:i:0
gatewaycredentialssource:i:0
full address:s:<ホストのサーバー名もしくは IP アドレス>
alternate shell:s:||imwpfsample
remoteapplicationprogram:s:||imwpfsample
gatewayhostname:s:
remoteapplicationname:s:imwpfsample
remoteapplicationcmdline:s:


RemoteAppでアプリを実行

Windows 10のクライアント環境に先ほど作成したrdpファイルを配布し実行します。先ほど設定したtaroの資格情報を入力し進むと、ホストのサーバーに配置していたアプリケーションが立ち上がります。(ホスト側で実行したアプリの画面が転送されてきた状態)

f:id:GrapeCity_dev:20180628151713p:plain

もちろん操作も可能です。

f:id:GrapeCity_dev:20180628151953p:plain

アプリケーションの仮想化ができると各端末にアプリケーション自体を配布する必要もなく、サーバー側で一元管理できるので便利ですね。


製品の機能を試すには

今回RemoteAppに対応した製品の基本機能を手軽に体感できるデモアプリケーションをWebサイトで公開しています。以下よりアクセスして是非お試しください!


開発者におすすめのフォーラム

7月10日(火)に弊社の開発支援ツール販売30周年記念フォーラム「Toolsの杜(ツールのもり)」を開催します。

弊社の.NET開発支援コンポーネントの最新動向や、実際の開発事例についてのセッションも行います。ぜひご参加ください。