Ask CORE

Microsoft Japan Windows Technology Support

Windows 10 でのシェルの置き換えについて

皆さん、こんにちは。Windows プラットフォーム サポートの高橋です。
Windows 製品を特定産業向けの組み込み用途としてご利用いただく場合に、 お客様の要件に合わせたカスタマイズに加えて、組み込み用途に特化した 独自開発のシェルへ既定のシェルより置き換える場合がございます。

本ブログではシェルを置き換えた場合に従来の Windows 7 SP1 と Windows 10  Enterprise 2016 LTSB で動作が異なる点について確認している事象をご案内します。

//Windows 10 Enterprise 2016 LTSB について

Windows 10 を組み込み用途にご利用いただく場合には、サポート ライフサイクルが 長期間提供可能で、機能更新を行わない長期サービス チャネル (LTSC) を推奨しています。 LTSC に対応した製品の最新版が Windows 10 Enterprise 2016 LTSB になります。

//シェルについて

ユーザーが Windows にログオン後にユーザー インターフェイスを提供する機能を Windows ではシェルとよんでいます。機能例としてはユーザーに対してデスクトップ上に 表示されるタスクバーの操作や、ファイル操作の機能を提供します。なお Windows の既定の設定では explorer.exe がシェルの機能を提供します。シェルの機能を提供するプロセス名を以下のレジストリ値に設定することで他のカスタム シェルに置き換えが可能です。

キー名:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
値名 :Shell

既定では上記レジストリ値 Shell に “explorer.exe” が設定されています。

//シェル置き換え時の Windows 7 SP1 と Windows 10 Enterprise 2016 LTSB での
動作の違いについて

1) explorer.exe のファイル ブラウザーの動作の違いについて

Windows 7 SP1 では上記にご案内したレジストリ値書き換え後、ログオン時に カスタム シェルを起動後、カスタム シェルより explorer.exe を起動した場合、 explorer.exe はファイル ブラウザーと動作します。下記の画像はコマンド プロンプト (cmd.exe) をカスタム シェルとして見立てて、レジストリ値 Shell に cmd.exe を設定して ログオンしている状態です。コマンド プロンプトから explorer.exe を起動後、エクスプローラーの ウィンドウが開く動作となります。

一方で、Windows 10 Enterprise 2016 LTSB でシェルを置き換えた場合、カスタム シェルから explore.exe を起動すると、Windows 7 SP1 のスクリーン ショットの状態から、タスク バーやデスクトップが表示される動作となります。

なお、explorer.exe に C:\ などのオプションを指定して起動した場合には、 Windows 7 SP1 と同様の動作になり、ファイル ブラウザーとしてのウィンドウのみが表示されます。

2) 壁紙の描画について

Windows 7 では壁紙の描画がカーネル側で行われていましたが、Windows 8 以降では explorer.exe の処理の中で行われようになりました。そのためシェルの置き換えをおこなって explorer.exe が起動していない場合、Windows 10 Enterprise 2016 LTSB では壁紙の描画を行わない動作となります。また壁紙の設定変更の操作もできなくなります。なお C:\Windows\system32\WallpaperHost.exe を起動した 場合には壁紙が描画されます。

上記にご案内しましたシェル置き換え時の Windows 7 SP1 と Windows 10 Enterprise 2016 LTSB での 動作の違いについては公式文書にも記載するように関連部門と確認をすすめております。 現在組み込み用途向けの OS を Windows 7 SP1 から Windows 10 LTSB (LTSC) への移行検討を進めているお客様もいらっしゃると思いますが、上記にご案内した情報が参考になれば幸いです。

補足事項 : Windows 10 Enterprise 2016 LTSB でのシェルの置き換えについては Windows 10 でサポートしている Shell Launcher の機能を利用して cmd.exe を埋め込みのシェルとして指定後、eshell.exe をレジストリ値 Shell に 指定して確認した結果です。Shell Launcher の概要については下記の技術文書をご参照ください。

“Shell Launcher”
https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/shell-launcher