Windows2012にドメイン無しでリモートAPPを実行させる方法

アクティブディレクトリ(AD)が必須

Windows2012になってから、RDSリモートAPPは、アクティブディレクトリ(ドメイン)環境下でないと出来ないように仕向けられている。ライセンスやウェブからの配布を目的としているようだが、そんなの迷惑極まりない。また、RDサーバとADサーバを兼用する事も出来ないので、猶更迷惑なことだ。

マイクロソフトに問い合わせると2008R2と仕組みは変わっていないという回答があった。だが、機能の追加にてリモートデスクトップを追加しようとすると、ドメインメンバーでなければならないと怒られる。

マイクロソフトの言い分

調べてみるとMSサイトに以下のような記事があった。

Windows Server 2012 リモート デスクトップ サービスは、ドメイン環境内のメンバー サーバー上での構築を「推奨」している。Windows Server 2012でメンバーサーバ以外での構築は管理コンソールがインストールされないためリモート デスクトップ環境の構成や管理が煩雑になる。また、ドメイン コントローラー上へ兼用でインストールする事は、サーバーへの負荷が大きくなるのでやめておいた方がいい。

と言う事らしい。2012になってインターフェイスが変わってまた覚えなおさなければならないと思ってたらこんな事までしてくれるとは・・・。不満たらたら。

ではどうすれば良いのか。そのページから紹介されているサイトにリンクしていたので実践してみて、不具合点等を修正した手順を記します。

AD無しでリモートAPPを実現させる手順

  1. 通常通り「機能の追加」からリモートデスクトップのみを追加する。その際、リモートデスクトップホスト、リモートデスクライセンスサーバを選択する。
  2. 管理ツール-リモートデスクトップ-リモートデスクトップライセンスを開き、ライセンスサーバのアクティブ化と、必要ライセンスをインストールする。
    また、ライセンスモードとしてユーザ数かデバイス数かの設定をグループポリシー(コンピュータの構成ー管理用テンプレートーWindowsコンポーネントーリモートデスクトップサービスーリモートデスクトップセッションホストーライセンスーリモートデスクトップライセンスモードの設定)で設定する。
    ユーザの場合は接続エラー回避の為、接続件数(同リモートデスクトップセッションホストー接続ー接続数を制限する)を無制限(999999)も行っておく(ユーザ数モードにすると、紳士協定となるのでライセンスの購入は予め行ってください)。
    これによりライセンス数は無制限となり、ライセンス数は足りているのに接続件数を超えたという不可解なエラーを回避する事が出来る。
  3. パワーシェル(管理者で実行)で、リモートデスクトップの環境を以下のコマンドでインストールする。
    (リモートデスクトップの準備フェーズ)
    (2016等のデスクトップエクスペリエンスインストール済みサーバは必要無い場合があります)
Add-WindowsFeature -Name RDS-RD-Server
Add-WindowsFeature -Name Desktop-Experience
Add-WindowsFeature -Name RSAT-RDS-Licensing-Diagnosis-UI
※サーバ再起動
Add-WindowsFeature -Name RDS-Licensing
Add-WindowsFeature -Name RDS-Licensing-UI
  1. リモートデスクトップライセンスサーバを登録
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "localhost" -PropertyType MultiString
※localhost をIPアドレス、PC名に変更可能
  1. リモートAPP登録用の下準備を行う。(レジストリにキーを追加)
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList"
New-Item $regPath -Name Applications
  1. リモートAPPのアプリケーションを登録する。
    (アプリケーション名は半角英数字が好ましい)
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications"
New-Item $regPath -Name アプリケーション名
New-ItemProperty $regPath\アプリケーション名 -Name CommandLineSetting -Value 0 -PropertyType Dword
New-ItemProperty $regPath\アプリケーション名 -Name Name -Value アプリケーション名 -PropertyType String
New-ItemProperty $regPath\アプリケーション名 -Name Path -Value アプリケーションパス\アプリケーションファイル名.exe -PropertyType String
New-ItemProperty $regPath\アプリケーション名 -Name RequiredCommandLine -PropertyType String
New-ItemProperty $regPath\アプリケーション名 -Name SecurityDescriptor -PropertyType String
New-ItemProperty $regPath\アプリケーション名 -Name ShowInTSWA -Value 1 -PropertyType Dword
※登録を修正する場合は、レジストリエディタにて可能
( HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList \Applications)
  1. RDPファイルを作成する。
    テキストに以下を張り付け、拡張子をrdpに変更する。

redirectposdevices:i:0
redirectprinters:i:1
redirectcomports:i:1redirectsmartcards: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:RDサーバ名
alternate shell:s:||アプリケーション名
remoteapplicationprogram:s:||アプリケーション名
gatewayhostname:s:
remoteapplicationname:s:アプリケーション名
remoteapplicationcmdline:s:

2013年5月24日:追記

リモートデスクトップマネージャも付属していので、セッションの確認、切断が出来ないが、DOSプロンプトにて同様の操作ができる。

RDセッションコマンド一覧
※()は略コマンド

ユーザーに関する情報を表示する:query user (quser)
リセット (削除) する:reset session [ID](rwinsta)
プロセスに関する情報を表示する:query process(qprocess)
プロセスを終了する:tskill [ID]
ユーザーセッションに関する情報を表示する:query session(qwinsta)

ソース http://technet.microsoft.com/ja-jp/library/cc771505.aspx

  • バッチを作ってみました。
echo off
query user
set ID =
set /P ID="セッションを削除するID入力してください: "
set /P YN="セッションID:%ID%を削除します。よろしいですか?[Y/N]:"
if "%YN%"=="Y" reset session %ID%
if "%YN%"=="y" reset session %ID%</td>

2017年1月20日:追記

上記機能は、タスクマネージャのユーザタブで賄えます。

宜しければ、シェアお願いします。

1件のコメント

ネットワーク認証が必要なければ
authentication level:i:0
でも良いですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA