Windows 7とWindows 8.1を、無料でWindows 10にアップグレードしてくれる親切で余計なお世話の Get Windows 10 App ですが、ついに役目を終えて更新プログラムにて削除されるようです。
・Remove software related to the Windows 10 free upgrade offer
Windows Updateを実行してオプションから選択出来ます。
更新プログラムをインストール後、コンピューターの再起動が求められます。
再起動してログオン中に”個人用設定”が少し表示されるので、このタイミングで削除しているのかと思います。
Get Windows 10 Appは「C:\Windows\System32\GWX」にインストールされており、このフォルダがなくなったことを確認すれば削除完了です。
カテゴリー: Windows
RDP Wrapper Libraryを使用してWindows 10に複数RDPセッションで接続できるようにする
Windows 10も[システムのプロパティ]からリモートタブより設定することで、リモートデスクトップサービス(RDP)を利用して遠隔操作することが出来ます。ただしこれはクライアントOSでは1セッションのみの制限があり、2セッション目からは下記のような表示が出て最初のセッションを閉じるように促されます。
別のユーザーがサインインしています。続行すると、それらのユーザーは切断されます。サインインしますか?
この事象を回避できないか調べてみたところ、RDP Wrapper Libraryというソフトウェアを使うことで複数接続できるようになります。このラッパーライブラリはターミナルサービス(termsrv.dll)を変更することが無いのでWindows Updateなども普通に実施出来ます。
・RDP Wrapper Library by Stas’M
現在最新のRDPWrap-v1.6.1.zipをダウンローとしたところ、下記ファイルが含まれていました。
RDPWInst.exe RDPラッパーライブラリのインストール/アンインストールプログラム
RDPCheck.exe RDPチェックユーティリティ(ローカル接続をして複数つなげるか確認するクライアント)
RDPConf.exe RDPラッパー構成ユーティリティ
install.bat/uninstall.bat/update.bat クイックインストール・アンインストール・アップデートバッチファイル
ラッパーライブラリをインストールするには、install.batを右クリックして「管理者として実行」にて自動的に完了しました。RDP接続中の場合は、一旦切断されて再接続されます。
インストール完了後、RDPConf.exeを実行してDiagnostics項目内が全部緑になっているかを確認します。緑になっていれば正常に動作中です。
あとはRDPCheck.exeを使用してローカルから確認するか、外部からリモートデスクトップ接続(mstsc.exe)を複数起動して対象PCにログオンしてみればOKです。
複数接続にはリモートデスクトップサービス クライアントアクセスライセンス(RDS-CAL)が必要になりそうなので、実運用というよりは評価版を使用して使ってみるという形になるかと思います。
Windows Server 2012のRDライセンスマネージャーに表示されるデバイスCAL発行先をエクスポートする
Windows Server 2003ではターミナルサーバーライセンスのPer-Device Client Access Licenseを、Windows Server 2000のリリースキットに収録されてあるLsreport.exeにて実行できました。
そのため同じように、Windows Server 2012に対してLsreport.exeを使用しようとするとエラーが表示され実行できません。
Windows Server 2008まではLsreport.exeが使用できていたので、どうやらそこまでが限界のようです。
リモートデスクトップライセンスマネージャで表示されているのを目コピーしてもよいのですがとてもメンドくさくて、画像ファイルにすると検索ができずにサイズが大きくなります。
それならば他に方法がないかと調べてみると、リモートデスクトップのAPIが公開されていたのでこれを使ってみたらよいかなと実験してみました。
・Remote Desktop Services API
https://technet.microsoft.com/ja-jp/aa383464
Win32_TSIssuedLicenseに様々なクラスがあり、それを呼び出せば普通に値が取得できるようです。
まずはライセンスの種類を取得するため、TSLicenseKeyPackを呼び出して値を記録します。
・Win32_TSLicenseKeyPack class
https://msdn.microsoft.com/en-us/library/aa383803.aspx
var KeyPackScope = new ManagementScope(@"\\" + System.Net.Dns.GetHostName() + @"\root\cimv2:Win32_TSIssuedLicense");
ObjectQuery KeyPackQuery = new ObjectQuery("Select * from Win32_TSLicenseKeyPack");
ManagementObjectSearcher KeyPackSearcher = new ManagementObjectSearcher(KeyPackScope, KeyPackQuery);
ManagementObjectCollection KeyPackCollection = KeyPackSearcher.Get();
そのあと、TSIssuedLicenseを呼び出してライセンスの一覧を取得し、ライセンスの種類は先ほど取得したものと置き換えます。
・Win32_TSIssuedLicense class
https://msdn.microsoft.com/en-us/library/aa383802.aspx
var IssuedLicenseScope = new ManagementScope(@"\\" + System.Net.Dns.GetHostName() + @"\root\cimv2:Win32_TSIssuedLicense");
ObjectQuery IssuedLicenseQuery = new ObjectQuery("Select * from Win32_TSIssuedLicense");
ManagementObjectSearcher IssuedLicenseSearcher = new ManagementObjectSearcher(IssuedLicenseScope, IssuedLicenseQuery);
ManagementObjectCollection IssuedLicenseCollection = IssuedLicenseSearcher.Get();
あとは取得したデータを好きにConsole.WriteLineで出力すれば、リリースキットのLsreport.exeと同じようなものが作れました。
一応、サンプルを置いておきます。エラー処理はほとんどしていないので、実際に使うときはもう少しtry/catchを入れたほうがよさそうです。
実行ファイル:LSReport_bin
ソースコード:LSReport_prj