割り当てられたアクセスのキオスク アプリ:ベスト プラクティスKiosk apps for assigned access: Best practices

Windows 10 では、1 つのユニバーサル Windows アプリだけと対話するのにことができますキオスク デバイスを作成するのに割り当てられたアクセスを使用できます。In Windows 10, you can use assigned access to create a kiosk device, which enables users to interact with just a single Universal Windows app. このトピックでは、キオスク アプリ、およびベスト プラクティスを実装する方法を説明します。This topic describes how to implement a kiosk app, and best practices.

割り当てられたアクセスが提供する 2 つの異なるエクスペリエンスがあります。There are two different experiences that assigned access provides:

  1. シングル アプリ キオスク エクスペリエンスThe single-app kiosk experience

    1. アカウントには、1 つのアプリを割り当てます。Assign one app to an account. ユーザーがログインするときは、のみ、このアプリとその他に何もへのアクセス、システム上、なります。When a user logs in, they will have access to only this app and nothing else on the system. この期間中、キオスク アプリがロック画面上で実行されている、キオスク デバイスはロックされています。During this time, the kiosk device is locked, with the kiosk app running above the lock screen. このエクスペリエンスはパブリックに公開されたキオスク コンピューターのよく使用されます。This experience is often used for public-facing kiosk machines. 参照してくださいを設定するには、Windows 10 Pro、Enterprise、または教育のキオスク詳細についてはします。see Set up a kiosk on Windows 10 Pro, Enterprise, or Education for more information.
  2. マルチ アプリ キオスク エクスペリエンスの (Windows 10 バージョン 1709 以降で使用可能)The multi-app kiosk experience (available in Windows 10, version 1709 and later)

    1. アカウントには、1 つまたは複数のアプリを割り当てることができます。You can assign one or more apps to an account. ユーザーのログオン、選択したアプリのみへのアクセスを制限付きのシェル エクスペリエンスで、デバイスが開始されます。When a user logs in, the device will start in a restricted shell experience with access to only your selected apps. 参照してください複数のアプリを実行している Windows 10 キオスクを作成する詳細についてはします。See Create a Windows 10 kiosk that runs multiple apps for more information.

注意

この記事では、シングル アプリ キオスク エクスペリエンスのみについて説明します。This article describes the single-app kiosk experience only. マルチ アプリ エクスペリエンスでは、選択されているアプリは、通常のデスクトップ コンテキストで実行され、特別な処理または変更は必要ありません。In the multi-app experience, selected apps run in a regular desktop context and require no special handling or modification.

用語Terms

用語Term 説明Description

割り当てられたアクセスassigned access

により、システム管理者は、デバイスのユーザーに公開されているアプリケーションのエントリ ポイントを制限することで、ユーザーのエクスペリエンスを管理する機能です。A feature that allows a system administrator to manage the user’s experience by limiting application entry points exposed to the user of the device. たとえば、キオスクのように、PC が機能するために 1 つのアプリを使用する、会社の顧客を制限できます。For example, you can restrict customers at your business to using one app so your PC acts like a kiosk. ユーザーが指定したアカウントでサインイン、ときにのみその 1 つのアプリを使用して開けなくなるします。Whenever someone signs in with the specified account, they'll only be able to use that one app. アプリを切り替えるか、タッチ ジェスチャ、マウス、キーボード、またはハードウェア ボタンを使用してアプリを閉じるにできません。They won't be able to switch apps or close the app using touch gestures, a mouse, the keyboard, or hardware buttons. アプリの通知も表示されませんされます。They also won't see any app notifications.

ロック画面アプリ (またはロック アプリ)lock screen app (or lock app)

アプリケーション ロックの新しい機能拡張フレームワークの利用または動的の壁紙を設定することの利点は、いずれかのことです。An application that either takes advantage of the ability to set a dynamic wallpaper or that takes advantage of the new lock extensibility framework.

ロック画面のアプリ上 (またはロック アプリ上)above lock screen app (or above lock app)

(たとえば、デスクトップがロックされている) 場合、ロック画面のアプリの実行中にロック画面を起動するアプリケーション。An application that launches above the lock screen while lock screen app is running (for example, when the desktop is locked).

ロック アプリunder lock app

ロックされていない Windows コンテキストでは通常、実行されるアプリケーション。An application that runs normally, in an unlocked Windows context.

LockApplicationHostLockApplicationHost

要求をロック画面アプリ上のデバイスを許可する WinRT クラスは、ロックの解除し、アプリ、デバイスがロックを解除する開始時に通知が登録を許可します。A WinRT class that allows above lock screen apps to request that the device unlocks, and allows the app to register to be notified when the device begins to unlock.

表示またはアプリケーションの表示View or Application View

各ビューは、アプリに別のウィンドウです。Each view is a separate window into the app. アプリは、main を表示、および複数の作成ができ、要求時にセカンダリを表示します。An app can have a main view, and create multiple and secondary views on demand. 参照してくださいApplicationView詳細についてはします。See ApplicationView for more information.

Windows.aboveLockScreen 拡張機能The windows.aboveLockScreen extension

Windows 10 で割り当てられたアクセスは、ロックのフレームワークを活用します。Assigned access in Windows 10 leverages the lock framework. 割り当てられたアクセスのユーザーがログイン時にバック グラウンド タスクは、デスクトップをロックし、ロックの上、キオスク アプリを起動します。When an assigned access user logs in, a background task locks the desktop and launches the kiosk app above the lock. Windows.aboveLockScreen 拡張機能を使用しているかどうかに応じて、アプリの動作が異なる場合があります。The app's behavior may differ, depending on whether it uses the windows.aboveLockScreen extension.

使用してwindows.aboveLockScreenキオスク アプリにアクセスできるように、 LockApplicationHostアプリが実行されているロック上 (およびそのキオスクとして実行されている場合を把握できるようにするランタイム クラスエクスペリエンス)。Using windows.aboveLockScreen enables your kiosk app to access the LockApplicationHost runtime class, which enables the app to know when it is running above the lock (and therefore running as a kiosk experience). インスタンスを返すことができない場合は、通常のデスクトップのコンテキストで、アプリが実行されています。If an instance cannot be returned, the app is running in a regular desktop context.

ロック framework ロックの上、キオスク アプリを起動して、アプリには、 windows.aboveLockScreen拡張機能では、ロックのフレームワークは自動的にロックの上の新しいセカンダリ ビューを作成します。When the lock framework launches the kiosk app above the lock and the app has the windows.aboveLockScreen extension, the lock framework automatically creates a new secondary view above the lock. メイン ビューは、ロックの下にあります。The main view is located under the lock. このセカンダリ ビューは、アプリのコンテンツが含まれてし、ユーザーに対して表示します。This secondary view will contain your app's content and be what the user sees. この追加のビューは、キオスク、エクスペリエンスを調整する、拡張機能を使用できます。This additional view can be used with the extension to tailor your kiosk experience. たとえば、次のようなことができます。For example, you can:

アプリがない場合、 windows.aboveLockScreen拡張機能では、セカンダリのビューは作成されませんし、アプリは、通常どおり実行されている場合が起動します。If the app does not have the windows.aboveLockScreen extension, no secondary view is created and the app launches as if it’s running normally. さらに、アプリには、LockApplicationHost のインスタンスへのアクセス権がないため、またはキオスク エクスペリエンスの正規表現のコンテキストで実行されている場合を判断することができません。Additionally, because the app will not have access to an instance of LockApplicationHost it won't be able to determine if it's running in a regular context, or for a kiosk experience. サポートするためにできるなどの利点があります、拡張子を含まない複数のモニターNot including the extension has benefits, such as being able to support multiple monitors

かどうか、アプリは、拡張機能を使用して、関係なく、そのデータをセキュリティで保護することを確認します。Regardless of whether your app uses the extension, be sure to secure its data. 参照してください、アプリに割り当てられたアクセスするためのガイドライン詳細についてはします。See the guidelines for assigned access apps for more information.

注意

以降では、Windows 10 version 1607 ではありません、ユニバーサル Windows プラットフォーム (UWP) 拡張機能の制限にほとんどのアプリを表示できるように設定アクセス権を割り当てるときにユーザーを構成します。Starting in Windows 10, version 1607, there is no longer a restriction on the Universal Windows Platform (UWP) extension, so most apps can be shown in Settings when user configures assigned access.

ベスト プラクティスBest practices

注意

このセクションを使用するキオスク アプリケーションに適用されます、 windows.aboveLockScreen拡張機能。This section applies to a Kiosk application that uses the windows.aboveLockScreen extension.

お客様の情報をセキュリティで保護します。 Secure your information

キオスク アプリが実行するものである場合両方上のロックでアクセス権が割り当てとも、ロックされていない Windows コンテキストで、ロックの上に表示するために別のページと、ロックの状況で他のページを作成します。If the kiosk app is meant to run both above lock in assigned access and also in the unlocked Windows context, you may want to create a different page to render above lock, and another page for under the lock. これは、オプションを選択するキオスク モードは、通常、匿名アクセスを意味するため、キオスク モードの場合は、機密情報を表示しないようにすることができます。This will allow you to avoid showing sensitive information in kiosk mode, since kiosk mode usually means anonymous access. 次に、2 つの異なるページを使用して、用に 1 つのロックおよびロックの上の 1 つには次の手順に示します。Here are the steps you'd follow to use two different pages, one for under the lock and one for above the lock:

  1. 内のオーバーライドで、 OnLaunched App.xaml.cs で関数のインスタンスを取得しようとしています、 LockApplicationHost rootFrame ナビゲーションの前にクラス。Inside the override of the OnLaunched function in App.xaml.cs, try to obtain an instance of the LockApplicationHost class before rootFrame navigation.
  2. 呼び出しが失敗した場合、キオスク アプリは正常に起動、ロックの下。If the call fails, the kiosk app should launch normally, under the lock.
  3. 呼び出しが成功すると、割り当てられたアクセス モードで実行されているロック上キオスク アプリを起動する必要があります。If the call succeeds, the kiosk app should launch above the lock running in assigned access mode. このバージョンの機密情報を非表示にする別のメイン ページに、キオスク アプリのことができます。You may want this version of the kiosk app to have a different main page to hide sensitive information.

次の例では、これを行う方法を示します。The following sample demonstrates how to do this. AssignedAccessPage.xaml は事前に定義し、アプリは、ロック モードの上で実行されていることが検出される AssignedAccessPage.xaml に移動します。AssignedAccessPage.xaml is predefined, and the app navigates to AssignedAccessPage.xaml once it detects that is running in above lock mode. その結果、通常のページをでのみ表示は、ロックの状況下。As a result, the normal page would display only in the under lock scenario.

このメソッドを使用して、アプリのライフ サイクルでいつでも、ロック画面アプリが実行されているかどうかを決定し、それに対応することができます。You can use this method to determine if the app is running above lock screen anytime in the app lifecycle and react accordingly.

using Windows.ApplicationModel.LockScreen;

// inside the override OnLaunched function in App.xaml.cs

if (rootFrame.Content == null)
{
    LockApplicationHost host = LockApplicationHost.GetForCurrentView();
    if (host == null)
    {
        // if call to LockApplicationHost is null, this app is running under lock
        // render MainPage normally
        rootFrame.Navigate(typeof(MainPage), e.Arguments);
    }
    else
    {
        // If LockApplicationHost was successfully obtained
        // this app is running as a lock screen app, or above lock screen app
        // render a different page for assigned access use
        // to avoid showing regular main page to keep secure information safe
        rootFrame.Navigate(typeof(AssignedAccessPage), e.Arguments);
    }
}

複数のビュー、windows、およびスレッド Multiple views, windows, and threads

Windows 10、バージョン 1803、以降複数ビューがないアプリのキオスク エクスペリエンスではサポートされている、 windows.aboveLockScreen拡張機能。Starting in Windows 10, version 1803, Multiple views are supported in the kiosk experience for apps that do not have the windows.aboveLockScreen extension. 複数のビューを使用するには、キオスク デバイスを確認します。マルチ ディスプレイにオプションが設定されているこれらの表示を拡張します。To use multiple views, ensure the kiosk device’s Multiple displays option is set to Extend these displays.

ときに複数のビューを使用するアプリ (されずwindows.aboveLockScreen) が起動される、キオスク エクスペリエンス中に、アプリのメイン ビューを 1 日のモニターに表示されます。When an app with multiple views (and without windows.aboveLockScreen) is launched during a kiosk experience, the main view of the app will be rendered on the 1st monitor. 新しいビューがアプリを使用して作成された場合CreateNewView()、これは、2 つ目のモニターにレンダリングされます。If a new view is created by app using CreateNewView(), it will be rendered on the second monitor. アプリでは、別のビューを作成する場合は、3 つ目のモニターに移動し、具合にします。If the app creates another view, it’ll go to the third monitor, and so on.

重要

キオスク デバイスは、モニターごとに 1 つのビューのみを表示できます。Kiosk devices can only display one view per monitor. たとえば、キオスク デバイスに 1 つのモニターがある場合は、キオスク アプリのメイン ビュー常に表示されます。For example, if the kiosk device has only one monitor, it will always show the main view of the kiosk app. アプリが作成した新しいビューには表示されません。New views created by the app will not be displayed.

キオスク アプリがある場合、 windows.aboveLockScreen拡張機能が実行されていると、ロックの上、初期化が異なります。When a kiosk app has the windows.aboveLockScreen extension, and is running above the lock, it’s initialized differently. セカンダリ上にビューを使用して、ロックの状況では、そのメイン ビューにあります。Its main view is located under the lock, with a secondary view above it. このセカンダリ ビューは、ユーザーが表示されるものになります。This secondary view will be what the user will see. 明示的にすべての新しいビューを作成しない場合でも必要があることも 2 つのビューで、アプリのインスタンスに注意してください。Note that even if you don’t explicitly create any new views, you’ll still have two views in the app instance.

ロック モードでアプリを実行するときにビューの z オーダー

(割り当てられたアクセス モード) では、アプリのメイン ウィンドウで、次のコードを実行すると、ビューの数と、現在の画面のメイン ビューがかどうかを参照してください。You can run the following code in the main window of your app (in assigned access mode) to see the view count and whether the current screen is the main view.

using Windows.ApplicationModel.Core;

CoreApplication.GetCurrentView().IsMain //false
CoreApplication.Views.Count //2

ディスパッチャーDispatcher

各ビューまたはウィンドウは、独自のディスパッチャーを持っています。Each view or window has its own dispatcher. メイン ビューがユーザーに表示されていないために、使用GetCurrentView() MainView() ではなく、ロックの上で実行されているアプリのセカンダリのビューにアクセスします。Because the main view is hidden to the user, use GetCurrentView() to access the app’s secondary view running above the lock instead of MainView().

using Windows.ApplicationModel.Core;

private async void Button_Click(object sender, RoutedEventArgs e)
{
    button.IsEnabled = false;

    // start a background task and update UI periodically (every 1 second)
    // using MainView dispatcher in below code will end up with app crash
    // in assigned access mode, use GetCurrentView().Dispatcher instead
    await CoreApplication.GetCurrentView().Dispatcher.RunAsync(
        CoreDispatcherPriority.Normal,
        async () =>
        {
            for (int i = 0; i < 60; ++i)
            {
                // do some background work, here we use Task.Delay to sleep
                await Task.Delay(1000);
                // update UI
                textBlock1.Text = "   " + i.ToString();
            }
            button.IsEnabled = true;
        });
}

アプリは、windows.aboveLockScreen を備え、キオスク エクスペリエンスとして実行され、ときに新しいビューを作成すると、アプリ内で例外が発生します。When the app has windows.aboveLockScreen and runs as a kiosk experience, creating new views will cause an exception within the app:

Windows.ApplicationModel.Core.CoreApplication.CreateNewView(); //causes exception

このため、複数のビューがあるまたは複数のモニター上で実行できません。Because of this, you cannot have multiple views or run on multiple monitors. を、アプリがいずれもサポートする必要がある場合は、アプリから windows.aboveLockScreen 拡張機能を削除する必要があります。If your app needs to support either, you will need to remove the windows.aboveLockScreen extension from your app.

割り当てられたアクセス外の手段を追加します。 Add a way out of assigned access

場合によっては、[電源] ボタン、エスケープ ボタン、またはその他のボタンを使用してアプリケーションを停止できない可能性があります有効または、キーボードでご確認いただけます。In some situations, the power button, escape button, or other buttons used to stop an application may not be enabled or available on the keyboard. このような状況では、割り当てられたアクセス、ソフトウェア キーのインスタンスを停止する方法を提供します。In these situations, provide a way to stop assigned access, for instance a software key. 次のイベント ハンドラーは、ボタンに応答することによって割り当てられたアクセス モードを停止する方法を示しています。 ソフトウェア キーによって発生する可能性がイベントをクリックします。The following event handler shows how to stop assigned access mode by responding to button click event that could be triggered by a software key.

LockApplicationHost^ lockHost = LockApplicationHost::GetForCurrentView();
    if (lockHost != nullptr)
    {
        lockHost->RequestUnlock();
    }

ライフ サイクル管理 Lifecycle management

キオスク アプリのライフ サイクルは、割り当てられたアクセス フレームワークによって処理されます。A kiosk app's lifecycle is handled by the assigned access framework. アプリが予期せず終了した場合、フレームワークは再起動しようとします。If the app ends unexpectedly, the framework will attempt to relaunch it. ただし、ユーザーは、ログイン画面を表示するには Ctrl + Alt + Del を押すと、ロックを解除するイベントがトリガーされます。If however, a user presses Ctrl+Alt+Del to bring up the login screen, an unlocking event is triggered. 割り当てられたアクセス フレームワークは、イベントをリッスンし、アプリを終了ましょう。The assigned access framework listens to the event, and will try to terminate the app.

キオスク アプリはこのイベントのハンドラーを登録し、終了する前にアクションを実行できます。Your kiosk app can also register a handler for this event and perform actions before exiting. この例は、データを保存します。Saving any data is an example of this. ハンドラーの登録の例を次のコードを参照してください。See the code below for an example of registering a handler.

using Windows.ApplicationModel.LockScreen;

public AssignedAccessPage()
{
    this.InitializeComponent();

    LockApplicationHost lockHost = LockApplicationHost.GetForCurrentView();
    if (lockHost != null)
    {
        lockHost.Unlocking += LockHost_Unlocking;
}
}

private void LockHost_Unlocking(LockApplicationHost sender, LockScreenUnlockingEventArgs args)
{
    // save any unsaved work and gracefully exit the app
    App.Current.Exit();
}

Ctrl + Alt + Del キーを押すし、ログイン画面が表示されます、次の 2 つが発生する可能性があります。After the user presses Ctrl+Alt+Del and a login screen is shown, two things could happen:

  1. ユーザーが、割り当てられたアクセス アカウントのパスワードを知っていて、デスクトップのロックを解除します。The user knows the assigned access account password and unlocks the desktop. 割り当てられたアクセス フレームワークと起動、デスクトップ、およびキオスク アプリを起動、ロック画面アプリが起動をロックします。The assigned access framework starts, locks the desktop, and the lock screen app launches which in turn launches the kiosk app.
  2. ユーザーがパスワードを知らないか、その後の操作を受け取りません。The user doesn’t know the password or doesn’t take any further action. ログイン画面のタイムアウトとデスクトップ relocks;ロック画面アプリが起動の結果には、キオスク アプリを起動します。The login screen timeouts and the desktop relocks; the lock screen app launches which in turn launches the kiosk app.

割り当てられたアクセス モードで新しいウィンドウまたはビューを作成しないでください。Don't create new windows or views in assigned access mode

次の関数呼び出しは割り当てられたアクセス モードでメソッドが呼び出された場合に、ランタイム例外終了します。The following function call will end up with a runtime exception if it’s invoked in assigned access mode. ロックの状況で使用する場合は、同じアプリでは、関数を呼び出し場合、ランタイム例外は発生しません。If the same app, when used under lock, calls the function, it does not cause a runtime exception. 使用することをお勧めLockApplicationHostアプリの割り当てられたアクセスのモードを決定し、新しいビューを作成しない場合は、アプリが割り当てられたアクセス モードなど、アプリをそれに応じてコードします。It’s helpful to use LockApplicationHost to determine the app's assigned access mode, and code your app accordingly, such as not creating new views if the app is in assigned access mode.

Windows.ApplicationModel.Core.CoreApplication.CreateNewView(); //causes exception

付録 1:UWP 拡張機能Appendix 1: UWP extension

次のサンプル アプリケーションで使用するマニフェスト、 windows.aboveLockScreenUWP 拡張機能。The following sample application manifest uses the windows.aboveLockScreenUWP extension.

注意

以降では、Windows 10 version 1607 ではありません、ユニバーサル Windows プラットフォーム (UWP) 拡張機能の制限にほとんどのアプリを表示できるように設定アクセス権を割り当てるときにユーザーを構成します。Starting in Windows 10, version 1607, there is no longer a restriction on the Universal Windows Platform (UWP) extension, so most apps can be shown in Settings when user configures assigned access.

<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
  <Identity Name="bd4df68b-dc18-4748-a14e-bc21dac13736" Publisher="Contoso" Version="1.0.0.0" />
  <mp:PhoneIdentity PhoneProductId="bd4df68b-dc18-4748-a14e-bc21dac13736" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
  <Properties>
    <DisplayName>AboveLock</DisplayName>
    <PublisherDisplayName>Contoso</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="AboveLock.App">
      <uap:VisualElements DisplayName="AboveLock" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="AboveLock" BackgroundColor="transparent">
        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
      <Extensions>
        <uap:Extension Category="windows.lockScreenCall" />
        <uap:Extension Category="windows.aboveLockScreen" />
      </Extensions>
    </Application>
  </Applications>
  <Capabilities>
    <Capability Name="internetClient" />
  </Capabilities>
</Package>

付録 2: のトラブルシューティングAppendix 2: troubleshooting

通常、キオスク アプリは、ロック画面のアプリ上のアクティブ化に失敗した場合、[ロックダウン] 画面で、アクティブ化エラー コードが表示されます。Normally, if a Kiosk app fails to activate above the lock screen app, you can find the activation error code in the lockdown screen. エラー コードを使用して Windows を参照して、問題を見つけたシステム エラー コードします。Use the error code to discover the issue by looking up Windows System Error Codes. さらにイベント ビューアーには、ライセンス認証エラーの詳細が含まれています。In addition Event Viewer contains more information about activation failures. 次の手順に従います。To do so:

  1. イベント ビューアーを開きます。Open Event Viewer. アクティブ化エラーを検出する可能性が高い 2 つの場所があります。There are two likely places to find activation errors.
  2. イベント ビューアー (ローカル) ウィンドウで、展開Windows ログ、 をクリックし、アプリケーションします。In the Event Viewer (Local) pane, expand Windows Logs, and then click Application.
  3. また、イベント ビューアー (ローカル) 、展開Applications and Services Logs、展開Windows、展開アプリ順にクリックしますMicrosoft Windows-TWinUI/運用します。Also, in Event Viewer (local), expand Applications and Services Logs, expand Windows, expand Apps, and then click Microsoft-Windows-TWinUI/Operational.

割り当てられたアクセス権を持つキオスク アプリが全画面表示モードで実行しないでくださいためApplicationView.GetForCurrentView() します。IsFullScreenModeは false を返します。Note that because kiosk apps with assigned access do not run in full-screen mode, ApplicationView.GetForCurrentView().IsFullScreenMode will return false.

関連トピックRelated topics

割り当てられたアクセスAssigned access

アプリの複数のビューを表示します。Show multiple views for an app