2020年10月13日にサポートが終了する「Windows Embedded Standard 7」から最新の「Windows 10」世代への移行について解説する本連載。第5回は、ロックダウン機能に用いられる各機能のうち、Shell LauncherとKeyboard Filterについて説明する。
今回は、特定用途向け機器でWindows 10 IoTを組み込む場合によく利用されるShell Launcher(シェルランチャー)とKeyboard Filter(キーボードフィルター)について解説したいと思います。
両機能ともに、機器を用いる中でその操作を限定するために利用されます。例えば、デジタルサイネージなどでは、運用時の表示機能以外、不要な操作を制限したい場合があります。キーボードが必要な端末などでは、通常の環境では独自のアプリケーションをフルスクリーンで起動していてもキーボードのショートカットによってWindowsの機能を呼び出すことができてしまいます。これによって機器の内部データを除かれたり、機器の設定を変更できてしまったりなどのリスクが考えられます。このため特定用途向けの機器では利用者による機器の操作制限が必要となります。
Shell LauncherとKeyboard Filterによる操作を制限する前に、ユーザーの切り替えについて触れてみます。
特定用途向けの機器では操作を制限しますが、機器のメンテナンスや設定変更などが現場で必要になることがあります。このため多くの機器では、Windows 10 IoTに管理者ユーザーと運用ユーザーの2つを作成し、通常運用時は運用ユーザーを利用し、メンテナンスが必要になった場合には管理者ユーザーでログオンし機器の設定変更などを行うことがあります。
管理者ユーザーはWindowsの全ての機能を操作することを可能とし、運用ユーザーでは機器の用途に限定した操作のみに制限するという設計が必要になります(図1)。
Shell Launcherでは、指定されたアプリケーションが、Explorerシェルを使用せずに起動します。この時タスクバーやスタートメニューは使用できず、指定されたアプリケーションのみが使用できる環境(カスタムシェル)となります。カスタムシェルはユーザーごとに指定が可能ですので、“運用ユーザーはカスタムシェルで業務アプリケーションのみを使用”、“管理者ユーザーはExplorerシェルでWindowsの全ての機能にアクセス可能”といったユーザーアカウントごとに異なる環境を構築することが可能になります。
Shell Launcherを有効にするためにはコントロールパネルの[プログラムと機能]−[Windowsの機能の有効化または無効化]を開き[デバイスのロックダウン]−[シェルランチャー]を有効にするか、DISMコマンドによって有効にすることができます(図2)。
DISMコマンド
dism /online /enable-feature /featureName:Client-EmbeddedShellLauncher /NoRestart
Shell Launcherの設定はWindows Management Instrumentation(WMI)のWESL_UserSettingを利用し設定します。
設定を行う先はユーザーごととなるため、下記のパワーシェルスクリプトの例(リスト1)ではShell Launcherを設定するユーザーとして“OpeUser”を指定しています。
$ShellLauncherClass = [wmiclass]"\\localhost\root\standardcimv2\embedded:WESL_UserSetting" function Get-UsernameSID($AccountName) { $NTUserObject = New-Object System.Security.Principal.NTAccount($AccountName) $NTUserSID = $NTUserObject.Translate([System.Security.Principal.SecurityIdentifier]) return $NTUserSID.Value } $SLUSER_SID = Get-UsernameSID("OpeUser") $ShellLauncherClass.SetEnabled($true) $ShellLauncherClass.SetDefaultShell("c:\windows\explorer.exe", 0) $ShellLauncherClass.RemoveCustomShell($SLUSER) $ShellLauncherClass.SetCustomShell($SLUSER, "c:\Application\UserApplication.exe", 0) ←アプリケーション名
上記を実行することで指定したアプリケーションをシェルとしたデスクトップ環境がOpeUserに設定されます。
また、Shell Launcher指定時にはアプリケーションが終了した時の機器の挙動を設定することができます。リスト1の例では、SetCustomShell()の第3パラメータに0を指定していますが、以下の値を設定することでアプリケーション終了時の挙動を指定できます。
Copyright © ITmedia, Inc. All Rights Reserved.