Kiosk-Apps für den zugewiesenen Zugriff: Bewährte Methoden

In Windows 10 können Sie den zugewiesenen Zugriff verwenden, um ein Kioskgerät zu erstellen, mit dem Benutzer nur mit einer einzigen universellen Windows-App interagieren können. In diesem Artikel wird beschrieben, wie Sie eine Kiosk-App und bewährte Methoden implementieren.

Es gibt zwei verschiedene Erfahrungen, die zugewiesenen Zugriff bieten:

  1. Die Einzel-App-Kioskumgebung

    Weisen Sie einer App ein Konto zu. Wenn sich ein Benutzer anmeldet, hat er nur Zugriff auf diese App und nichts anderes auf dem System. Während dieser Zeit ist das Kioskgerät gesperrt, wobei die Kiosk-App über dem Sperrbildschirm ausgeführt wird. Diese Erfahrung wird häufig für kiosk-öffentlich zugängliche Computer verwendet. weitere Informationen finden Sie unter Einrichten eines Kiosks unter Windows 10 Pro, Enterprise oder Education .

  2. Die Multi-App-Kioskumgebung (verfügbar in Windows 10, Version 1709 und höher)

    Sie können einem Konto eine oder mehrere Apps zuweisen. Wenn sich ein Benutzer anmeldet, wird das Gerät in einer eingeschränkten Shell-Umgebung gestartet, die nur auf Ihre ausgewählten Apps zugreifen kann. Weitere Informationen finden Sie unter Erstellen eines Windows 10-Kiosks, der mehrere Apps ausführt.

In diesem Artikel wird nur die Einzel-App-Kioskoberfläche beschrieben. In der Multi-App-Umgebung werden ausgewählte Apps in einem normalen Desktopkontext ausgeführt und erfordern keine spezielle Behandlung oder Änderung.

Begriffe

Begriff Beschreibung
Zugewiesener Zugriff Ein Feature, das es einem Systemadministrator ermöglicht, die Benutzererfahrung zu verwalten, indem die Einstiegspunkte der Anwendung eingeschränkt werden, die dem Benutzer des Geräts verfügbar gemacht werden. Beispielsweise können Sie Kunden in Ihrem Unternehmen auf die Verwendung einer App beschränken, damit Ihr PC wie ein Kiosk fungiert. Wenn sich jemand mit dem angegebenen Konto anmeldet, kann er diese App nur verwenden. Sie können apps nicht wechseln oder die App mithilfe von Touchgesten, einer Maus, der Tastatur oder Hardwaretasten schließen. Außerdem werden keine App-Benachrichtigungen angezeigt.
Sperrbildschirm-App (oder Sperr-App) Eine Anwendung, die entweder die Möglichkeit nutzt, ein dynamisches Hintergrundbild festzulegen oder das neue Sperrerweiterungsframework nutzt.
über der Sperrbildschirm-App (oder über der Sperr-App) Eine Anwendung, die über dem Sperrbildschirm gestartet wird, während die Sperrbildschirm-App ausgeführt wird (z. B. wenn der Desktop gesperrt ist).
unter Sperr-App Eine Anwendung, die normal ausgeführt wird, in einem entsperrten Windows-Kontext.
LockApplicationHost Eine WinRT-Klasse, die über Sperrbildschirm-Apps die Anforderung anfordert, dass das Gerät entsperrt wird, und ermöglicht der App, sich zu registrieren, wenn das Gerät mit der Entsperrung beginnt.
Ansicht oder Anwendungsansicht Jede Ansicht ist ein separates Fenster in der App. Eine App kann über eine Standard Ansicht verfügen und bei Bedarf mehrere und sekundäre Ansichten erstellen. Weitere Informationen finden Sie unter ApplicationView .

Die Erweiterung "windows.aboveLockScreen"

Der zugewiesene Zugriff in Windows 10 verwendet das Sperrframework. Wenn sich ein Benutzer mit zugewiesenem Zugriff anmeldet, sperrt eine Hintergrundaufgabe den Desktop und startet die Kiosk-App über der Sperre. Je nachdem, ob die Windows.aboveLockScreen-Erweiterung verwendet wird, kann sich das Verhalten der App unterscheiden.

Mithilfe von "windows.aboveLockScreen " kann Ihre Kiosk-App auf die LockApplicationHost-Laufzeitklasse zugreifen, wodurch die App wissen kann, wann sie über der Sperre ausgeführt wird (und daher als Kioskumgebung ausgeführt wird). Wenn eine Instanz nicht zurückgegeben werden kann, wird die App in einem normalen Desktopkontext ausgeführt.

Wenn das Lock Framework die Kiosk-App über der Sperre startet und die App die Erweiterung "windows.aboveLockScreen" aufweist, erstellt das Lock Framework automatisch eine neue sekundäre Ansicht über der Sperre. Die Standard Ansicht befindet sich unter der Sperre. Diese sekundäre Ansicht enthält den Inhalt Ihrer App und ist das, was der Benutzer sieht. Diese zusätzliche Ansicht kann mit der Erweiterung verwendet werden, um Ihre Kioskerfahrung anzupassen. Sie können zum Beispiel Folgendes:

Wenn die App nicht über die Erweiterung "windows.aboveLockScreen " verfügt, wird keine sekundäre Ansicht erstellt, und die App wird gestartet, als ob sie normal ausgeführt wird. Da die App keinen Zugriff auf eine Instanz von LockApplicationHost hat, kann sie nicht ermitteln, ob sie in einem regulären Kontext oder für eine Kioskumgebung ausgeführt wird. Die Erweiterung enthält keine Vorteile, z. B. die Unterstützung mehrerer Monitore

Unabhängig davon, ob Ihre App die Erweiterung verwendet, achten Sie darauf, ihre Daten zu sichern. Weitere Informationen finden Sie in den Richtlinien für Apps mit zugewiesenem Zugriff.

Ab Windows 10, Version 1607, gibt es keine Einschränkung mehr für die Erweiterung Universelle Windows-Plattform (UWP), sodass die meisten Apps in Einstellungen angezeigt werden können, wenn der Benutzer den zugewiesenen Zugriff konfiguriert.

Bewährte Methoden

Dieser Abschnitt bezieht sich auf eine Kioskanwendung, die die Erweiterung "windows.aboveLockScreen " verwendet.

Sichern Ihrer Informationen

Wenn die Kiosk-App sowohl über der Sperre im zugewiesenen Zugriff als auch im entsperrten Windows-Kontext ausgeführt werden soll, sollten Sie eine andere Seite erstellen, die über der Sperre gerendert wird, und eine andere Seite für die Sperre. Auf diese Weise können Sie verhindern, dass vertrauliche Informationen im Kioskmodus angezeigt werden, da der Kioskmodus in der Regel anonymen Zugriff bedeutet. Hier sind die Schritte, die Sie ausführen, um zwei verschiedene Seiten zu verwenden: eine für die Sperre und eine für oberhalb der Sperre:

  1. Versuchen Sie in der Außerkraftsetzung der OnLaunched-Funktion in App.xaml.cs, eine Instanz der LockApplicationHost-Klasse vor der RootFrame-Navigation abzurufen.

  2. Wenn der Anruf fehlschlägt, sollte die Kiosk-App normal unter der Sperre gestartet werden.

  3. Wenn der Anruf erfolgreich verläuft, sollte die Kiosk-App über der Sperre gestartet werden, die im Modus für den zugewiesenen Zugriff ausgeführt wird. Möglicherweise möchten Sie, dass diese Version der Kiosk-App über eine andere Standard Seite verfügt, um vertrauliche Informationen auszublenden.

Im folgenden Beispiel wird dies veranschaulicht. AssignedAccessPage.xaml ist vordefiniert, und die App navigiert zu AssignedAccessPage.xaml, sobald sie erkennt, dass über dem Sperrmodus ausgeführt wird. Daher würde die normale Seite nur im Szenario "Unter Sperre" angezeigt.

Mit dieser Methode können Sie ermitteln, ob die App über dem Sperrbildschirm ausgeführt wird, wenn sie jederzeit im App-Lebenszyklus ausgeführt wird und entsprechend reagiert.

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);
    }
}

Mehrere Ansichten, Fenster und Threads

Ab Windows 10, Version 1803, werden mehrere Ansichten in der Kioskumgebung für Apps unterstützt, die nicht über die Erweiterung "windows.aboveLockScreen " verfügen. Um mehrere Ansichten zu verwenden, stellen Sie sicher, dass die Option "Mehrere Anzeigen" des Kioskgeräts auf die Erweiterung dieser Displays festgelegt ist.

Wenn eine App mit mehreren Ansichten (und ohne windows.aboveLockScreen) während einer Kioskumgebung gestartet wird, wird die Standard Ansicht der App auf dem ersten Monitor gerendert. Wenn eine neue Ansicht mithilfe von CreateNewView()von der App erstellt wird, wird sie auf dem zweiten Monitor gerendert. Wenn die App eine andere Ansicht erstellt, wechselt sie zum dritten Monitor usw.

Wichtig

Kioskgeräte können nur eine Ansicht pro Monitor anzeigen. Wenn das Kioskgerät beispielsweise nur einen Monitor hat, wird immer die Standard Ansicht der Kiosk-App angezeigt. Neue Ansichten, die von der App erstellt wurden, werden nicht angezeigt.

Wenn eine Kiosk-App die Erweiterung "windows.aboveLockScreen " aufweist und über der Sperre ausgeführt wird, wird sie anders initialisiert. Die Standard Ansicht befindet sich unter der Sperre mit einer sekundären Ansicht darüber. Diese sekundäre Ansicht sieht der Benutzer. Auch wenn Sie keine neuen Ansichten explizit erstellen, verfügen Sie weiterhin über zwei Ansichten in der App-Instanz.

Z-Reihenfolge für Ansichten, wenn die App im Sperrmodus ausgeführt wird.

Sie können den folgenden Code im fenster Standard Ihrer App (im Modus "Zugewiesener Zugriff") ausführen, um die Ansichtsanzahl anzuzeigen und festzustellen, ob der aktuelle Bildschirm die Standard Ansicht ist.

using Windows.ApplicationModel.Core;

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

Sender

Jede Ansicht oder jedes Fenster verfügt über einen eigenen Verteiler. Da die Standard Ansicht für den Benutzer ausgeblendet ist, verwenden Sie GetCurrentView(), um auf die sekundäre Ansicht der App zuzugreifen, die über der Sperre anstelle von MainView() ausgeführt wird.

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;
        });
}

Wenn die App über "windows.aboveLockScreen" verfügt und als Kioskumgebung ausgeführt wird, führt das Erstellen neuer Ansichten zu einer Ausnahme innerhalb der App:

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

Aus diesem Gründen können Sie nicht über mehrere Ansichten verfügen oder auf mehreren Monitoren ausgeführt werden. Wenn Ihre App eine der Beiden unterstützen muss, müssen Sie die Erweiterung "windows.aboveLockScreen" aus Ihrer App entfernen.

Hinzufügen eines Wegs außerhalb des zugewiesenen Zugriffs

In einigen Fällen ist die Ein/Aus-Taste, die Escapetaste oder andere Tasten, die zum Beenden einer Anwendung verwendet werden, möglicherweise nicht aktiviert oder auf der Tastatur verfügbar. In diesen Situationen können Sie den zugewiesenen Zugriff beenden, z. B. einen Softwareschlüssel. Der folgende Ereignishandler zeigt, wie Sie den Zugewiesenen Zugriffsmodus beenden, indem Sie auf das Schaltflächenauswahlereignis reagieren, das durch einen Softwareschlüssel ausgelöst werden kann.

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

Lebenszyklusverwaltung

Der Lebenszyklus einer Kiosk-App wird vom zugewiesenen Zugriffsframework behandelt. Wenn die App unerwartet beendet wird, versucht das Framework, sie neu zu starten. Wenn ein Benutzer jedoch STRG+ALT+ENTF drückt, um den Anmeldebildschirm anzuzeigen, wird ein Entsperrungsereignis ausgelöst. Das Zugewiesene Zugriffsframework lauscht auf das Ereignis und versucht, die App zu beenden.

Ihre Kiosk-App kann auch einen Handler für dieses Ereignis registrieren und Aktionen vor dem Beenden ausführen. Das Speichern von Daten ist ein Beispiel dafür. Ein Beispiel für die Registrierung eines Handlers finden Sie im folgenden Code.

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();
}

Nachdem der Benutzer STRG+ALT+ENTF drückt und ein Anmeldebildschirm angezeigt wird, können zwei Dinge passieren:

  1. Der Benutzer kennt das Kennwort für das zugewiesene Zugriffskonto und entsperrt den Desktop. Das Framework für den zugewiesenen Zugriff startet, sperrt den Desktop und die Sperrbildschirm-App, die wiederum die Kiosk-App startet.

  2. Der Benutzer kennt das Kennwort nicht oder ergreift keine weiteren Maßnahmen. Die Timeouts für den Anmeldebildschirm und die Desktopsperrungen; die Sperrbildschirm-App startet, wodurch wiederum die Kiosk-App gestartet wird.

Erstellen Sie keine neuen Fenster oder Ansichten im Modus "Zugewiesener Zugriff".

Der folgende Funktionsaufruf endet mit einer Laufzeit ausnahme, wenn er im zugewiesenen Zugriffsmodus aufgerufen wird. Wenn dieselbe App, wenn sie unter Sperre verwendet wird, die Funktion aufruft, verursacht sie keine Laufzeit-Ausnahme. Es ist hilfreich, LockApplicationHost zu verwenden, um den Modus für den zugewiesenen Zugriff der App zu ermitteln und Ihre App entsprechend zu codieren, z. B. keine neuen Ansichten zu erstellen, wenn sich die App im Zugewiesenen Zugriffsmodus befindet.

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

Anhang 1: UWP-Erweiterung

Das folgende Beispielanwendungsmanifest verwendet die Windows.aboveLockScreen-UWP-Erweiterung.

Ab Windows 10, Version 1607, gibt es keine Einschränkung mehr für die Erweiterung Universelle Windows-Plattform (UWP), sodass die meisten Apps in Einstellungen angezeigt werden können, wenn der Benutzer den zugewiesenen Zugriff konfiguriert.

<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>

Anhang 2: Problembehandlung

Wenn eine Kiosk-App über der Sperrbildschirm-App nicht aktiviert werden kann, finden Sie den Aktivierungsfehlercode im Sperrmodusbildschirm. Verwenden Sie den Fehlercode, um das Problem zu ermitteln, indem Sie Windows System-Fehlercodes nachschlagen. Darüber hinaus enthält Ereignisanzeige weitere Informationen zu Aktivierungsfehlern. Dazu gehen Sie wie folgt vor:

  1. Öffnen Sie die Ereignisanzeige. Es gibt zwei Wahrscheinlichkeitsorte, an denen Aktivierungsfehler gefunden werden.

  2. Erweitern Sie im Bereich Ereignisanzeige (Lokal) Windows-Protokolle, und wählen Sie dann "Anwendung" aus.

  3. Erweitern Sie auch in Ereignisanzeige (lokal) Anwendungs- und Dienstprotokolle, erweitern Sie Windows, erweitern Sie Apps, und wählen Sie dann Microsoft-Windows-TWinUI/Operational aus.

Da Kiosk-Apps mit zugewiesenem Zugriff nicht im Vollbildmodus ausgeführt werden, führt ApplicationView.GetForCurrentView() aus. IsFullScreenMode gibt "false" zurück.

Zugewiesener Zugriff

Anzeigen mehrerer Ansichten für eine App