Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No Windows 10, você pode usar o acesso atribuído para criar um dispositivo de quiosque, o que permite que os usuários interajam com apenas um único aplicativo Universal do Windows. Este artigo descreve como implementar um aplicativo de quiosque e as práticas recomendadas.
Há duas experiências diferentes que o acesso atribuído fornece:
A experiência de quiosque de aplicativo único
Atribua um aplicativo a uma conta. Quando um usuário faz logon, ele tem acesso apenas a este aplicativo e nada mais no sistema. Durante esse tempo, o dispositivo de quiosque é bloqueado, com o aplicativo de quiosque em execução acima da tela de bloqueio. Esta experiência é frequentemente utilizada para computadores de quiosque destinados ao público. consulte Configurar um quiosque no Windows 10 Pro, Enterprise ou Education para obter mais informações.
A experiência de quiosque de vários aplicativos (disponível no Windows 10, versão 1709 e posterior)
Você pode atribuir um ou mais aplicativos a uma conta. Quando um usuário faz logon, o dispositivo começa em uma experiência de shell restrita com acesso apenas aos aplicativos selecionados. Consulte Criar um quiosque do Windows 10 que executa vários aplicativos para obter mais informações.
Este artigo descreve apenas a experiência de quiosque de aplicativo único. Na experiência de vários aplicativos, os aplicativos selecionados são executados em um contexto de área de trabalho regular e não exigem nenhuma manipulação ou modificação especial.
Termos
Prazo | Descrição |
---|---|
acesso atribuído | Um recurso que permite que um administrador do sistema gerencie a experiência do usuário limitando os pontos de entrada do aplicativo expostos ao usuário do dispositivo. Por exemplo, você pode restringir os clientes da sua empresa a usar um aplicativo para que seu computador aja como um quiosque. Sempre que alguém entrar com a conta especificada, ele só poderá usar esse aplicativo. Eles não podem alternar aplicativos ou fechar o aplicativo usando gestos de toque, um mouse, o teclado ou botões de hardware. Eles também não verão nenhuma notificação de aplicativo. |
aplicativo de tela de bloqueio (ou aplicativo de bloqueio) | Um aplicativo que aproveita a capacidade de definir um papel de parede dinâmico ou que aproveita a nova estrutura de extensibilidade de bloqueio. |
aplicativo acima da tela de bloqueio (ou aplicativo acima do bloqueio) | Um aplicativo que é iniciado acima da tela de bloqueio enquanto o aplicativo de tela de bloqueio está em execução (por exemplo, quando a área de trabalho está bloqueada). |
em aplicativo de bloqueio | Um aplicativo que é executado normalmente, em um contexto desbloqueado do Windows. |
LockApplicationHost | Uma classe WinRT que permite que aplicativos de tela de bloqueio acima solicitem que o dispositivo desbloqueie e permite que o aplicativo se registre para ser notificado quando o dispositivo começar a desbloquear. |
Visão ou Visão de Aplicativo | Cada visualização é uma janela separada no aplicativo. Um aplicativo pode ter uma exibição principal e criar exibições múltiplas e secundárias sob demanda. Consulte ApplicationView para obter mais informações. |
A extensão windows.aboveLockScreen
O acesso atribuído no Windows 10 usa a estrutura de bloqueio. Quando um usuário de acesso atribuído faz logon, uma tarefa em segundo plano bloqueia a área de trabalho e inicia o aplicativo de quiosque acima do bloqueio. O comportamento do aplicativo pode ser diferente, dependendo se ele usa a extensão windows.aboveLockScreen.
Usar windows.aboveLockScreen permite que seu aplicativo de quiosque acesse a classe de tempo de execução LockApplicationHost, que permite que o aplicativo saiba quando está em execução acima do bloqueio (portanto, funcionará como uma experiência de quiosque). Se uma instância não puder ser retornada, o aplicativo será executado em um contexto de área de trabalho regular.
Quando a estrutura de bloqueio inicia o aplicativo de quiosque acima do bloqueio e o aplicativo tem a extensão windows.aboveLockScreen , a estrutura de bloqueio cria automaticamente uma nova exibição secundária acima do bloqueio. A exibição principal está localizada sob o bloqueio. Essa exibição secundária contém o conteúdo do aplicativo e é o que o usuário vê. Essa exibição pode ser usada com a extensão para adaptar sua experiência de quiosque. Por exemplo, você pode:
Proteja sua experiência de quiosque criando uma página separada para exibir conteúdo somente quiosque.
Chame o método LockApplicationHost.RequestUnlock() de seu aplicativo para adicionar uma saída do modo acesso atribuído e volte para a tela de entrada.
Adicione um manipulador de eventos ao evento LockApplicationHost.Unlocking que é acionado quando um usuário pressiona Ctrl+Alt+Del para sair da experiência de quiosque. O manipulador também pode ser usado para salvar qualquer dado antes de sair.
Se o aplicativo não tiver a extensão windows.aboveLockScreen , nenhuma exibição secundária será criada e o aplicativo será iniciado como se estivesse em execução normalmente. Além disso, como o aplicativo não terá acesso a uma instância do LockApplicationHost, ele não poderá determinar se ele está em execução em um contexto regular ou para uma experiência de quiosque. Não incluir a extensão tem benefícios, como ser capaz de dar suporte a vários monitores
Independentemente de seu aplicativo usar a extensão, certifique-se de proteger seus dados. Consulte as diretrizes para aplicativos de acesso atribuídos para obter mais informações.
A partir do Windows 10, versão 1607, não há mais uma restrição na extensão da Plataforma Universal do Windows (UWP), portanto, a maioria dos aplicativos pode ser mostrada em Configurações quando o usuário configura o acesso atribuído.
Práticas recomendadas
Esta seção se aplica a um aplicativo de quiosque que usa a extensão windows.aboveLockScreen .
Proteger suas informações
Se o aplicativo de quiosque for feito para rodar tanto acima do bloqueio no acesso atribuído quanto no contexto desbloqueado do Windows, talvez você queira criar uma página diferente para exibir acima do bloqueio e outra página para exibir sob o bloqueio. Isso permite que você evite mostrar informações confidenciais no modo de quiosque, já que o modo de quiosque geralmente significa acesso anônimo. Estas são as etapas que você seguiria para usar duas páginas diferentes, uma para abaixo do bloqueio e outra para acima do bloqueio:
Dentro da substituição da função OnLaunched em App.xaml.cs, tente obter uma instância da classe LockApplicationHost antes da navegação rootFrame.
Se a chamada falhar, o aplicativo de quiosque deverá ser iniciado normalmente, sob o bloqueio.
Se a chamada for bem-sucedida, o aplicativo de quiosque deverá ser iniciado acima do bloqueio em execução no modo de acesso atribuído. Talvez você queira que essa versão do aplicativo de quiosque tenha uma página principal diferente para ocultar informações confidenciais.
O exemplo a seguir demonstra como fazer isso. AssignedAccessPage.xaml é predefinido e o aplicativo navega até AssignedAccessPage.xaml quando detecta que está em execução no modo de bloqueio acima. Como resultado, a página normal seria exibida somente no cenário em bloqueio.
Você pode usar esse método para determinar se o aplicativo está sendo executado acima da tela de bloqueio a qualquer momento no ciclo de vida do aplicativo e reagir adequadamente.
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);
}
}
Várias visões, janelas e threads
A partir do Windows 10, versão 1803, há suporte para várias exibições na experiência de quiosque para aplicativos que não têm a extensão windows.aboveLockScreen . Para usar várias exibições, verifique se a opção De várias exibições do dispositivo de quiosque está definida para Estender essas exibições.
Quando um aplicativo com várias exibições (e sem windows.aboveLockScreen) é iniciado durante uma experiência de quiosque, a exibição principal do aplicativo será renderizada no primeiro monitor. Se uma nova exibição for criada pelo aplicativo usando CreateNewView(), ela será renderizada no segundo monitor. Se o aplicativo criar outra visão, ela irá para o terceiro monitor e assim por diante.
Importante
Os dispositivos de quiosque só podem exibir uma exibição por monitor. Por exemplo, se o dispositivo de quiosque tiver apenas um monitor, ele sempre mostrará a exibição principal do aplicativo de quiosque. Novas exibições criadas pelo aplicativo não serão exibidas.
Quando um aplicativo de quiosque tem a extensão windows.aboveLockScreen e está em execução acima do bloqueio, ele é inicializado de forma diferente. Sua vista principal está localizada sob a trava, com uma vista secundária acima dela. Essa exibição secundária é o que o usuário vê. Mesmo que você não crie explicitamente novas visualizações, ainda terá duas visões na instância de aplicativo.
Você pode executar o código a seguir na janela principal do seu aplicativo (no modo de acesso atribuído) para ver a contagem de exibição e se a tela atual é a exibição principal.
using Windows.ApplicationModel.Core;
CoreApplication.GetCurrentView().IsMain //false
CoreApplication.Views.Count //2
Despachante
Cada exibição ou janela tem seu próprio dispatcher. Como a exibição principal está oculta para o usuário, use GetCurrentView() para acessar a exibição secundária do aplicativo em execução acima do bloqueio em vez de 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;
});
}
Quando o aplicativo tiver windows.aboveLockScreen e for executado como uma experiência de quiosque, a criação de novas exibições causará uma exceção dentro do aplicativo:
Windows.ApplicationModel.Core.CoreApplication.CreateNewView(); //causes exception
Por isso, você não pode ter várias exibições ou executar em vários monitores. Se o aplicativo precisar dar suporte a qualquer um dos dois, você precisará remover a extensão windows.aboveLockScreen do seu aplicativo.
Adicionar uma saída de acesso atribuído
Em algumas situações, o botão de energia, o botão de escape ou outros botões usados para interromper um aplicativo podem não estar habilitados ou disponíveis no teclado. Nessas situações, forneça uma maneira de interromper o acesso atribuído, por exemplo, uma chave de software. O manipulador de eventos a seguir mostra como interromper o modo de acesso atribuído respondendo ao evento de seleção de botão que pode ser disparado por uma chave de software.
LockApplicationHost^ lockHost = LockApplicationHost::GetForCurrentView();
if (lockHost != nullptr)
{
lockHost->RequestUnlock();
}
Gerenciamento do ciclo de vida
O ciclo de vida de um aplicativo de quiosque é tratado pela estrutura de acesso atribuída. Se o aplicativo terminar inesperadamente, a estrutura tentará relança-lo. No entanto, se um usuário pressionar Ctrl+Alt+Del para abrir a tela de entrada, um evento de desbloqueio será disparado. A estrutura de acesso atribuída escuta o evento e tentará encerrar o aplicativo.
Seu aplicativo de quiosque também pode registrar um manipulador para esse evento e executar ações antes de sair. Salvar dados é um exemplo disso. Consulte o código abaixo para obter um exemplo de registro de um manipulador.
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();
}
Depois que o usuário pressionar Ctrl+Alt+Del e uma tela de entrada for mostrada, duas coisas poderão acontecer:
O usuário conhece a senha da conta de acesso atribuída e desbloqueia a área de trabalho. A estrutura de acesso atribuída é iniciada, bloqueia a área de trabalho e o aplicativo de tela de bloqueio é iniciado, que por sua vez inicia o aplicativo de quiosque.
O usuário não sabe a senha ou não toma nenhuma ação adicional. A tela de login tem um tempo limite e a área de trabalho é bloqueada novamente; o aplicativo de tela de bloqueio é iniciado e, em seguida, inicia o aplicativo de quiosque.
Não crie novas janelas ou exibições no modo de acesso atribuído
A chamada de função a seguir acabará com uma exceção de runtime se ela for invocada no modo de acesso atribuído. Se o mesmo aplicativo, quando bloqueado, chama a função, ele não provoca uma exceção de tempo de execução. É útil usar LockApplicationHost para determinar o modo de acesso atribuído do aplicativo e codificar seu aplicativo adequadamente, como não criar novas exibições se o aplicativo estiver no modo de acesso atribuído.
Windows.ApplicationModel.Core.CoreApplication.CreateNewView(); //causes exception
Apêndice 1: extensão UWP
O manifesto do aplicativo de exemplo a seguir usa a extensão UWP windows.aboveLockScreen.
A partir do Windows 10, versão 1607, não há mais uma restrição na extensão da Plataforma Universal do Windows (UWP), portanto, a maioria dos aplicativos pode ser mostrada em Configurações quando o usuário configura o acesso atribuído.
<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>
Apêndice 2: Solução de problemas
Normalmente, se um aplicativo de quiosque não for ativado acima do aplicativo de tela de bloqueio, você poderá encontrar o código de erro de ativação na tela de bloqueio. Use o código de erro para descobrir o problema pesquisando códigos de erro do sistema Windows. Além disso, o Visualizador de Eventos contém mais informações sobre falhas de ativação. Para fazer isso:
Abra Visualizador de Eventos. Há dois locais prováveis para encontrar erros de ativação.
No painel Visualizador de Eventos (Local), expanda Logs do Windows e selecione Aplicativo.
Além disso, no Visualizador de Eventos (local), expanda Logs de Aplicativos e Serviços, expanda Windows, expanda Aplicativos e selecione Microsoft-Windows-TWinUI/Operational.
Como os aplicativos de quiosque com acesso atribuído não são executados no modo de tela inteira, ApplicationView.GetForCurrentView(). IsFullScreenMode retorna false.