未知のポリシー設定を探せ,サポートされた追加のデバイスのリダイレクトは、ポリシーによって無効にされいます。,未知のgroup policy変更,terminalservices-pnpdevices 36,windows10 remotefx,未知のグループポリシー変更
Windows 10のトラブルシューティング事例──未知のポリシー設定を探せ!
Windows 10 Pro/Enterprise/Educationでは「リモートデスクトップサービス」のデバイスリダイレクト機能に関して、これまでのWindowsから仕様が変更されている部分があります。筆者はこの仕様変更に関する公式な情報を確認していませんが、仕様変更の発見に至った経緯をトラブルシューティングの事例として紹介します。「山市良のうぃんどうず日記」のインデックス
連載目次
はじめに、デバイスリダイレクトの仕様変更について
2台のWindowsコンピューター間のリモートデスクトップ接続では、接続元のさまざまなデバイスを、接続先のリモートセッションにリダイレクトして使用することができます。標準でプリンターやドライブ、スマートカード、オーディオ、デジタルカメラ、メディアプレーヤーなどをリダイレクトできます。デジタルカメラやメディアプレーヤーは「PTP(Picture Transfer Protocol)」または「MTP(Media Transfer Protocol)」プロトコルに対応したもので、「その他のサポートされているプラグアンドプレイ(PnP)デバイス」と表示されます。
接続先が対応していれば、標準の方法でリダイレクトできないWebカメラやVoIPデバイス、生体認証デバイスといったUSBデバイスを、リモートセッションにリダイレクトすることも可能です。
USBデバイスのリダイレクトは「RemoteFX USBデバイスリダイレクト」という機能であり、接続先がWindows 8以降のEnterpriseエディション、Windows Server 2012以降のリモートデスクトップセッションホスト、RDP 8.0をサポートするWindows 7 Enterprise/Ultimate Service Pack(SP)1、およびRemoteFX 3Dビデオアダプターが割り当てられたRDP 7.1を使用するWindows 7 Enterprise/Ultimate SP1のVDI仮想デスクトップで利用できます。RemoteFX USBデバイスリダイレクトでリダイレクトできるデバイスは、「その他のサポートされているRemoteFX USBデバイス」と表示されます(画面1)。
画面1 Windows間のリモートデスクトップ接続では、接続元のPnPデバイスやUSBデバイスを接続先にリダイレクトできる。「RemoteFX USBデバイスリダイレクト」は、接続先のOSやエディションが限定されることに注意
Windows 10では「その他のサポートされているプラグアンドプレイ(PnP)デバイス」と「その他のサポートされているRemoteFX USBデバイス」は、既定でリダイレクトが許可されていません。Windows 8.1およびWindows Server 2012 R2以前は、既定でリダイレクトが許可されていました。
この既定の仕様がWindows 10では全く逆に変更されたため、従来と同じ方法で「その他のサポートされているプラグアンドプレイ(PnP)デバイス」や「その他のサポートされているRemoteFX USBデバイス」のデバイスをリダイレクトしようとしても失敗してしまいます。
以前のWindowsと同じように、接続先のWindows 10に対して「その他のサポートされているプラグアンドプレイ(PnP)デバイス」のリダイレクトを許可したい場合、また、接続先のWindows 10 Enterpriseに対して「その他のサポートされているRemoteFX USBデバイス」を許可したい場合は、ローカルコンピューターポリシーまたはグループポリシーで、接続先のコンピューターの以下のポリシーを「無効」に設定し、コンピューターを再起動する必要があります(画面2)。
・コンピューターの構成¥管理用テンプレート¥Windowsコンポーネント¥リモートデスクトップセッションホスト¥デバイスとリソースのリダイレクト¥サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない
画面2 Windows 10のPnPデバイスとUSBデバイスのリダイレクトの動作を以前のバージョンと同じに戻すには、接続先の「サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない」ポリシーを「無効」に設定して再起動する
今回のテーマは、Windows 10の仕様変更の話ではありません。従来の動作に戻すポリシーをどのようにして見つけたのか、その手順がトラブルシューティングの良い事例になると思ったので、順を追って説明します。Windows 10のこの仕様変更については、筆者の個人ブログにまとめてありますので、興味のある方はそちらをご覧ください。
【調査1】イベントログから情報を収集する
Windowsで何かトラブルが発生した際に、真っ先に確認したいのが「イベントログ」です。イベントビューアーを開いて、「アプリケーション」ログや「システム」ログに異常がないかどうかを確認するのはもちろん、「アプリケーションとサービスログ」のアプリケーションやサービスごとのログも確認しましょう。
「その他のサポートされているプラグアンドプレイ(PnP)デバイス」のリダイレクトの成功と失敗のイベントは、接続先のコンピューターの「Microsoft¥Windows¥TerminalServices-PnPDevices」の「Operational」と「Admin」に記録されます。「その他のサポートされているRemoteFX USBデバイス」の成功と失敗のイベントは、接続先のコンピューターの「Microsoft¥Windows¥TerminalServices-USBDevices」の「Operational」と「Admin」に記録されます。
PnPまたはUSBデバイスのリダイレクトに失敗した接続先のWindows 10コンピューターでは、イベントID36の警告イベント「サポートされた追加のデバイスのリダイレクトは、ポリシーによって無効にされています。」が記録されていました(画面3)。
画面3 USBデバイスのリダイレクト失敗の理由として、接続先のWindows 10のイベントログに「サポートされた追加のデバイスのリダイレクトは、ポリシーによって無効にされています。」と記録されていた
【調査2】Procmonで参照されるレジストリを確認する
Windowsのエラーメッセージは実際の状況を示しておらず、役に立たないものが多いと考える人もいるようです。例えば、エラー内容が「この操作は中止されました。システム管理者に問い合わせてください」ならそうでしょう。
しかし、今回のイベントログに記録されたエラーのようなものは、まず、その表現通りに受け取るべきです。つまり、今回の問題は「ポリシーによって無効化されている」ことが原因と考えられます。しかし、筆者は問題の発生しているWindows 10に対して、ローカルポリシーやグループポリシーを何も構成していません。
Windowsのポリシー設定は、レジストリの「HKEY_LOCAL_MACHINE¥SOFTWARE¥Policies」や「HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Policies」、あるいは「HKEY_CURRENT_USER¥SOFTWARE¥Policies」といった場所に書き込まれ、既定のローカル設定よりも優先されます。
そこで、PnPやUSBデバイスのリダイレクトの際、これらの場所にあるどのポリシー設定を参照しているのかを、Windows Sysinternalsの「Process Monitor(Procmon)」を使用して追跡してみました。Procmonは、Windowsで行われているファイル、レジストリ、ネットワークへのアクセス、プロセスとスレッドの処理情報をリアルタイムにキャプチャして、表示するツールです。
Process Monitor(Windows Sysinternals)
Process Monitorを直接ダウンロード(Sysinternals Live)
Procmonをリモートデスクトップ接続のセッション内で開始し、いったんセッションを切断して、PnPデバイスやUSBデバイスをリダイレクトするように指定してから再接続します。接続が完了したらProcmonのキャプチャを停止して、「Policies」を含むレジストリアクセスを探します。Procmonは膨大な情報を記録しますが、フィルター機能を利用することで、ある程度絞り込むことができます(画面4)。画面4 探しているポリシーは、レジストリ値「fDisablePNPRedir」に関係しているようだ
どうやら、探しているレジストリ値は「HKEY_LOCAL_MACHINE¥SOFTWARE¥Policies¥Microsoft¥Windows NT¥Terminal Services¥fDisablePNPRedir」のようなのですが、結果が「NAME NOT FOUND」なので、Windows 10にこのポリシー設定は適用されていません。どういうことでしょう。
【調査3】管理用テンプレート(.admx)で該当ポリシーを探す!
続いて、レジストリ値「HKEY_LOCAL_MACHINE¥SOFTWARE¥Policies¥Microsoft¥Windows NT¥Terminal Services¥fDisablePNPRedir」が、どのポリシーに対応しているのかを調べてみました。
ポリシーの管理用テンプレート(.admx)は、「C:\Windows\PolicyDefinitions」フォルダーに格納されています。Windows PowerShellで次のコマンドラインを実行すれば、「fDisablePNPRedir」を含む管理用テンプレートを特定できます。また、「fDisablePNPRedir」のポリシーのポリシー名や説明にひも付いたIDを取得できます。
Get-ChildItem C:\Windows\PolicyDefinitions\*.admx |Select-String "fDisablePNPRedir"
「fDisablePNPRedir」が関係するポリシー設定は、「C:\Windows\PolicyDefinitions\TerminalServer.admx」に「TS_CLIENT_PNP」というIDで存在しました。次に、「C:\Windows\PolicyDefinitions\ja-jp\TerminalServer.adml」を「メモ帳」で開いて、「TS_CLIENT_PNP」を検索します。その結果、探しているポリシーの名前は「サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない」であると特定できました(画面5)。画面5 ポリシーの管理用テンプレート(*.admx)の中から「fDisablePNPRedir」を含むものを探し出し、対応する言語ファイル(*.adml)からポリシー名を特定する
後は、管理用テンプレートが「TerminalServer.admx」であることや、コンピューターの構成(class="Machine")であることを考慮すれば、「ローカルグループポリシーエディター(Gpedit.msc)」で簡単に探しているポリシーを見つけることができます(前出の画面2)。
【調査4】「ポリシーの説明」を新旧で比較してみました
Windows 10の「サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない」のヘルプの説明には、「既定では、サポートされているプラグアンドプレイデバイスとRemoteFX USBデバイスのリダイレクトが、リモートデスクトップサービスで許可されていません」と書いてあります。ポリシー設定の既定とは、「ポリシーが未構成の場合の動作仕様」のことです。PnPデバイスやUSBデバイスをリダイレクトできなかったのは、このポリシー設定が未構成だったからです。
同じポリシーをWindows 8.1以前と比較してみましょう(画面6)。Windows 7やWindows 8.1における同じポリシーのヘルプには、「既定では、サポートされているプラグアンドプレイデバイスのリダイレクトは、リモートデスクトップサービスにより許可されています」となっています。
画面6 「サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない」ポリシーの説明。画面左がWindows 10で、画面右がWindows 8.1(Windows 7も同様)
これは、「サポートされているプラグアンドプレイデバイスのリダイレクトを許可しない」の既定の動作仕様は、Windows 8.1以前の「既定で許可」から、Windows 10の「既定で許可しない」に変更になったということを示しています。
筆者はこの仕様変更に関する公式な情報を確認できていませんが、例えマイクロソフトのサポートサービスに問い合わせたとしても、正しい回答を得るまでにはしばらく時間がかかるでしょう。今回の事例が、今後のトラブルシューティングのヒントになればと思います。
No comments:
Post a Comment