Windows 11 で Kiosk を構成する方法

Published Date: feedback 共有

本記事はマイクロソフト社員によって公開されております。

こんにちは、Windows サポートの新谷です。

今回は、Windows 11 でキオスクを構成する方法についてご案内します。

概要

キオスクは、許可したアプリのみをユーザーから使用可能にし、メンテナンスや展開のコストを下げ、また画一的なサービスの提供を可能にすることを目的とした構成です。
キオスクを実現する機能としては、Assigned Access と Shell Launcher があります。それぞれ、主な利用シチュエーションは次のようになります。

  • Assigned Access: UWP アプリや Edge を全画面で実行する場合や、許可した複数のアプリを利用する場合
  • Shell Launcher: カスタムした Windows デスクトップアプリで Explorer を置き換えて利用する場合

(参考)Windows kiosks configuration options overview
https://learn.microsoft.com/en-us/windows/configuration/kiosk/

シングルアプリ キオスクでは許可したアプリを全画面で利用可能で、マルチアプリ キオスクでは 1 つまたは複数のアプリをスタート メニューから利用可能です。
マルチアプリ キオスクは Windows 11 では Assigned Access で構成します。
カスタムしたデスクトップアプリをご利用の場合には Shell Launcher が選択肢となります。

各機能を利用可能なエディションは以下の通りです。

機能 Pro Enterprise / Education IoT Enterprise
Assigned Access
Shell Launcher ×

キオスクを Windows 11 で構成する手順としては次の流れとなります。

  1. Assigned Access または Shell Launcher を構成する XML ファイルを作成
  2. MDM Bridge WMI Provider 経由で XML ファイルをローカル端末に反映
  3. (Intune の場合) 2. で検証した XML ファイルをカスタムポリシーにて配布し、反映

注意

Intune デバイス構成テンプレートについて

Intune には「デバイスの構成」テンプレート内にキオスク プロファイルのテンプレートが用意されていますが、Windows 11 では意図したとおりに動作しないことがあります。
Windows 11 でキオスクを構成する場合は、Intune のキオスク テンプレートは使用せず、本記事で紹介するカスタム構成プロファイル (OMA-URI) による XML の配布を行ってください。

展開方法

下記に、XML のサンプルや各機能の注意点をご説明します。

本記事のサンプルは、Windows 11 バージョン 22H2 以降を対象とします。

  • Assigned Access: Windows 11 Pro、Enterprise、Education、IoT Enterprise
  • Shell Launcher: Windows 11 Enterprise、Education、IoT Enterprise
  • Assigned Access を使用する端末では、ユーザー アカウント制御 (UAC) を有効にしてください。
  • キオスク ユーザーは端末のコンソールからサインインしてください。リモート デスクトップ接続ではキオスク エクスペリエンスを利用できません。
  • 検証中に端末を管理できるように、キオスク ユーザーとは別の管理者アカウントを用意してください。

シングルアプリ キオスク XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<AssignedAccessConfiguration
xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
xmlns:v4="http://schemas.microsoft.com/AssignedAccess/2021/config">
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Edge Kiosk">
<KioskModeApp
v4:ClassicAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe"
v4:ClassicAppArguments="--kiosk https://www.microsoft.com --edge-kiosk-type=public-browsing --kiosk-idle-timeout-minutes=2"/>
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Kiosk User"/>
<DefaultProfile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}"/>
</Config>
</Configs>
</AssignedAccessConfiguration>

XML の各要素について補足します。

  • KioskModeApp: シングルアプリ キオスクで起動するアプリを指定する要素です。UWP アプリの場合は AppUserModelId 属性で AUMID を指定します。Edge 等のデスクトップアプリの場合は v4:ClassicAppPath で実行ファイルのパスを指定し、v4:ClassicAppArguments で起動引数を指定します。
  • v4:ClassicAppPath: デスクトップアプリの実行ファイルのパスを指定します。%ProgramFiles(x86)% 等の環境変数が使用できます。
  • v4:ClassicAppArguments: アプリに渡す起動引数を指定します。Edge の場合、以下のキオスク モード引数を指定します。
    • --kiosk <URL>: キオスクモードで開く URL を指定します。
    • --edge-kiosk-type=fullscreen: 指定した URL を全画面表示します (デジタルサイネージ用途)。
    • --edge-kiosk-type=public-browsing: InPrivate モードの制限付きブラウザーとして動作します (公共端末用途)。
    • --kiosk-idle-timeout-minutes=<分>: 指定した時間無操作が続くとブラウザーをリセットします。
  • AutoLogonAccount: Assigned Access が自動ログオン用のローカル標準ユーザー アカウントを作成し、管理します。rs5:DisplayName でサインイン画面に表示される表示名を設定できます。
  • DefaultProfile: Config 内でユーザーに割り当てるプロファイルを Id で指定します。

マルチアプリ キオスク XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration
xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
xmlns:v5="http://schemas.microsoft.com/AssignedAccess/2022/config">
<Profiles>
<Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}" Name="Edge Kiosk">
<AllAppsList>
<AllowedApps>
<App DesktopAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" />
<App DesktopAppPath="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge_proxy.exe" />
<App AppUserModelId="Microsoft.MicrosoftEdge.Stable_8wekyb3d8bbwe!App" />
</AllowedApps>
</AllAppsList>
<v5:StartPins>
<![CDATA[
{ "pinnedList": [
{ "desktopAppLink": "%ALLUSERSPROFILE%\\Microsoft\\Windows\\Start Menu\\Programs\\Microsoft Edge.lnk" }
] }
]]>
</v5:StartPins>
<Taskbar ShowTaskbar="false" />
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount rs5:DisplayName="Kiosk User" />
<DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}" />
</Config>
</Configs>
</AssignedAccessConfiguration>

XML の各要素について補足します。

  • AllowedApps: キオスク ユーザーに許可するアプリを指定します。Edge にてセカンダリ タイルを利用する場合、DesktopAppPath で msedge.exe および msedge_proxy.exe のパスと、AppUserModelId (AUMID) の両方を指定する必要があります。
  • StartPins: Windows 11 のスタート メニューにピン留めするアプリを指定します。デスクトップアプリの場合は desktopAppLink でスタート メニューのショートカットパスを指定します。
  • Taskbar: タスクバーの表示/非表示を制御します。
  • AutoLogonAccount: Assigned Access が自動ログオン用のローカル標準ユーザー アカウントを作成し、管理します。
    • Account: 既存のローカル、ドメイン、または Microsoft Entra ID ユーザーを割り当てる場合は、AutoLogonAccount ではなく Account を使用します。Microsoft Entra ID ユーザーは <Account>AzureAD\user@domain</Account> の形式で指定します。複数の Config 要素を定義して、複数のユーザーに同じプロファイルを割り当てることもできます。

Shell Launcher XML

Shell Launcher では、アプリをシェルとして起動します。以下は、自動ログインのキオスク ユーザーに対してメモ帳をシェルとして設定する例です。
Shell Launcher v1 では Win32 アプリに限られていましたが、v2 では UWP アプリを起動可能となりました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration
xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<DefaultProfile>
<Shell Shell="%SystemRoot%\explorer.exe"/>
</DefaultProfile>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<Shell Shell="%SystemRoot%\System32\notepad.exe" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
<DefaultAction Action="RestartShell"/>
</Shell>
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount/>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}"/>
</Config>
</Configs>
</ShellLauncherConfiguration>

XML の各要素について補足します。

  • DefaultProfile: どのプロファイルにも該当しないユーザーに対するシェルを指定します。通常は explorer.exe を指定して通常のデスクトップを維持します。
  • Shell: シェルとして起動する実行ファイルのパスを指定します。Win32 アプリの場合はフルパスまたは環境変数を含むパス、UWP アプリの場合は AUMID を指定します。
  • V2:AppType: アプリの種別を指定します。Desktop (Win32) または UWP を指定します。UWP を指定する場合、Shell 属性には実行ファイルのパスではなく AUMID を記述します (例: Shell="Microsoft.BingWeather_8wekyb3d8bbwe!App")。
  • V2:AllAppsFullScreen: true に設定すると、シェルアプリおよびそこから起動されるすべてのアプリが全画面 (またはデスクトップアプリの場合は最大化) で実行されます。
  • DefaultAction: シェルプロセスが終了した際の既定のアクションを定義します。RestartShellRestartDeviceShutdownDeviceDoNothing から選択します。
  • ReturnCodeActions: シェルプロセスの特定の終了コードに対するアクションを個別に定義できます (省略可)。

終了コードに対応するアクションがなく、DefaultAction も未定義の場合、Shell Launcher は何も実行せず、終了したカスタム シェルは再起動されません。

AUMID の確認方法

許可するアプリの AUMID は次のような PowerShell コマンドで確認できます。

1
Get-StartApps | Where-Object { $_.Name -like "*Edge*" }

インストール済みのパッケージアプリ一覧から確認する場合:

1
Get-AppxPackage | Select-Object Name, PackageFamilyName

ローカル端末への適用

作成した XML ファイルをローカル端末に適用するには、MDM Bridge WMI Provider を使用します。
MDM Bridge WMI Provider へのアクセスにはシステム (SYSTEM) 権限が必要です。管理者権限の PowerShell では権限不足となりますのでご注意ください。

  1. PsExec をダウンロードし、管理者権限のコマンドプロンプトから以下を実行して SYSTEM 権限の PowerShell を起動します。
1
psexec -i -s powershell.exe
  1. 以下のコマンドで XML を適用します。XML ファイルのパスは環境に合わせて変更してください。プロパティ名は Assigned Access の場合は Configuration、Shell Launcher の場合は ShellLauncher を使用します。
1
2
3
4
5
6
7
8
9
10
11
$namespaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className

# Assigned Access の場合
$obj.Configuration = [System.Net.WebUtility]::HtmlEncode((Get-Content -Path ".\kiosk.xml" -Encoding UTF8 -Raw))

# Shell Launcher の場合
# $obj.ShellLauncher = [System.Net.WebUtility]::HtmlEncode((Get-Content -Path ".\kiosk.xml" -Encoding UTF8 -Raw))

Set-CimInstance -CimInstance $obj
  1. 適用後、端末を再起動するとキオスク構成が有効になります。

構成の解除

ローカル端末に適用したキオスク構成を解除する手順です。

管理者アカウントでサインインし、手順 1 と同様に PsExec から SYSTEM 権限の PowerShell を起動します。
次のコマンドにより対象のプロパティを $null に設定します。

1
2
3
4
5
$namespaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_AssignedAccess"
$obj = Get-CimInstance -Namespace $namespaceName -ClassName $className
$obj.Configuration = $null # Shell Launcher の場合は $obj.ShellLauncher = $null
Set-CimInstance -CimInstance $obj

再起動すると、構成が解除されます。
なお、Assigned Access の構成を解除した後も、スタート メニューの変更などが完全に元に戻らない場合があります。

Shell Launcher 利用時の前提条件

Shell Launcher は Windows のオプション機能として提供されています。使用前に有効化が必要です。
Intune で配布する場合には、自動で有効化されるため、手動での有効化は必要ありません。

1
Enable-WindowsOptionalFeature -Online -FeatureName "Client-EmbeddedShellLauncher" -All

Shell Launcher 利用時の注意

Shell Launcher は指定したアプリをシェルとして起動する機能であり、指定したアプリ以外の実行を自動的に禁止するものではありません。キーボード ショートカットや「ファイルを開く」ダイアログ ボックス、子プロセスの起動などから、シェル以外の機能にアクセスできてしまう場合があります。
Shell Launcher を使用する際は、想定外のアクセスが発生しないことを事前に検証してください。必要に応じて、標準ユーザー アカウントの使用、AppLocker によるアプリの実行制御、グループ ポリシーによる機能制限などを併用することをお勧めします。

Intune によるリモート展開

ローカルでの検証が完了したら、Intune のカスタム構成プロファイルを使用して複数端末に展開できます。

  1. Microsoft Intune 管理センター > デバイス > 構成プロファイル > プロファイルの作成
  2. プラットフォーム: Windows 10 以降、プロファイルの種類: テンプレート を選択し、カスタム で作成
  3. 構成設定にて OMA-URI 設定を追加:
    • Assigned Access の場合:
      • OMA-URI: ./Vendor/MSFT/AssignedAccess/Configuration
      • データ型: 文字列 (XML ファイル)
      • 値: XML ファイルを指定
    • Shell Launcher の場合:
      • OMA-URI: ./Vendor/MSFT/AssignedAccess/ShellLauncher
      • データ型: 文字列 (XML ファイル)
      • 値: XML ファイルを指定
  4. 構成プロファイルを保存
  5. 対象デバイスを含むグループに、プロファイルを割り当て
  6. Intune 管理センターより、対象デバイスの状態を確認し、対象デバイスでも構成が変更されたことを確認

トラブルシューティング

キオスク構成が期待通りに動作しない場合、次のポイントを確認してください。

  • イベント ログ:
    • Microsoft-Windows-AssignedAccess/Admin および Microsoft-Windows-AssignedAccess/Operational を確認します。Operational は既定で無効なため、XML を再適用する前に有効化してください。
    • Intune から配布した場合は、Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Admin を確認します。
    • 自動ログオンに失敗する場合は、Microsoft-Windows-Authentication User Interface/Operational を確認します。
  • XML の検証: XML のスキーマエラーがある場合、構成は適用されません。エラーの詳細はイベント ログに記録されます。
  • AUMID の確認: 指定した AUMID が対象端末に存在しない場合、アプリは表示されません。
  • アカウントの確認: 指定したユーザーアカウントが端末上に存在することを確認してください。Assigned Access は管理者アカウントには適用されません。Shell Launcher は管理者アカウントにも適用できますが、カスタム シェルはサインインしたアカウントと同じ権限で実行されるため、標準ユーザー アカウントの使用をお勧めします。

参考情報


以上の内容がお役に立ちましたら幸いです。
本記事の内容は執筆時点の情報に基づいており、今後の更新で動作が変更される可能性がありますこと、ご了承ください。