Windows10で埋め込みシェル起動ツール(Shell Launcher)を設定する方法
Windows10で埋め込みシェル起動ツール(Shell Launcher)は使用できるのは、「Windows10 Iot Enterprise」と、「Windows10 Enterprise」だと思っていましたが・・・ どうやら他のエディションでもいける雰囲気です。ロックダウン機能の一部は下のエディション等でもいけるみたいですね。
ここでは、「Windows10 Enterprise」についての設定方法を記載する。以前では、ロックダウンマネージャ(Embedded Lockdown Manager)が提供されていなかったが、 それに代わるツールとして、Windows ICD(Windowsイメージングおよび構成デザイナー)にて、同様にGUI設定可能である。
※Windows ICDでShell Launcherを設定する方法
埋め込みシェル起動ツール(Shell Launcher)を設定を行う前に有効化する必要がある(コマンドをインストールする) ⇒ 埋め込みシェル起動ツールを使用する方法
★埋め込みシェル起動ツール(Shell Launcher)とは
埋め込みシェル起動ツール(Shell Launcher)とは、eshell.exeと呼ばれるプログラムのことである。eshell.exeプログラムは、その内部に別の プログラム(例えば、cmd.exeなど)を埋め込むことが可能。eshell.exeを起動すると、その埋め込まれた別のプログラムが起動する。 尚、eshellの一番の特徴は、プログラムを停止させても自動で再度起動がかかることである。なので、使用者に強制的に何かのプログラムを 実行させたい場合などは、このeshellを使用すれば大丈夫である。
その他の使用方法としては、Windowsログイン後にexplorer.exeを起動させず、eshell.exeを起動させてしまえば、使用者は eshell.exeに埋め込んだプログラムしか使用出来ない風を装うことが可能。実際はタスクマネージャ等を起動させれば他のプログラムを 実行することは可能。
以下は、power shellで設定する方法
★埋め込みシェル起動ツール(Shell Launcher)の使用例(cmd.exeを埋め込んだeshell.exeを起動した場合)
C:\windows\system32内に、eshell.exeがあるので、それを起動する。
cmd.exeが起動するが、×で閉じても、すぐに同じcmd.exeの起動がかかる。
★埋め込みシェル起動ツール(Shell Launcher)の設定方法(Windows Powershellにて設定)
※GUIで行う場合は⇒※Windows ICDでShell Launcherを設定する方法
Windows Powershellを管理者実行する。左下のウィンドウボタンをクリック⇒すべてのアプリ⇒Windowsシステムツール⇒WindowsPowershellを右クリック管理者として実行するを選択。
1、eshell.exeに埋め込むプログラムの設定(全ユーザへの反映)
以下コマンド(例:mstsc.exeを埋め込む場合)-----------
$ShellLauncherClass = [wmiclass]"\\localhost\root\standardcimv2\embedded:WESL_UserSetting"
$ShellLauncherClass.SetDefaultShell("mstsc.exe", 0)
以上ここまで-----------
※後ろの数字は、プログラム停止時の動作設定。0:プログラム再起動、1:PC再起動、2:PCシャットダウン、3:何もしない
2、各ユーザ毎にeshell.exeに埋め込むプログラムの設定
以下コマンド(例:testユーザのeshellに、notepad.exeを埋め込む場合)-----------
$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
}
$test_SID = Get-UsernameSID("test")
$ShellLauncherClass.SetCustomShell($test_SID, "notepad.exe")
以上ここまで-----------
※2の各ユーザ毎の設定を変更する場合は、RemoveCustomShellで一度解除が必要。解除後に再度設定する。以下に解除方法を示す。
以下コマンド(例:testユーザのeshellの埋め込み解除)-----------
$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
}
$test_SID = Get-UsernameSID("test")
$ShellLauncherClass.RemoveCustomShell($test_SID)
以上ここまで-----------
※別の設定方法(GUIで行う)
※Windows ICDでShell Launcherを設定する方法
★埋め込みシェル起動ツール(Shell Launcher)を、ログイン時に強制起動させる方法
ログイン時にデスクトップ画面以外のプログラムを起動させる方法を参考にして、 ログイン時に起動するプログラムをeshell.exeにすれば良い。今回の埋め込みはmstsc.exeなので、ログイン時に以下の ような画面のみが起動する。もちろん×で閉じてもeshellの効果により、mstsc.exeが再度起動がかかる。
ということで、埋め込みシェル起動ツールを使用すると、見た目的に強制的にプログラムを使用させることが可能となる。
★埋め込みシェル起動ツールを元の設定に戻す方法(power shellで行う)
以下コマンド(例:mstsc.exeを埋め込む場合)-----------
$ShellLauncherClass = [wmiclass]"\\localhost\root\standardcimv2\embedded:WESL_UserSetting"
$ShellLauncherClass.SetDefaultShell("cmd.exe", 0)
以上ここまで-----------