分配的访问权限的展台应用:最佳做法

原文: 分配的访问权限的展台应用:最佳做法

best practices guidance for developing a kiosk app for assigned access.

在 Windows 10 中,你可以使用锁屏框架和分配的访问权限创建展台应用,该应用允许用户与设备上的单个应用进行交互。 本文档介绍了如何实现展台应用,并介绍了最佳做法。所有示例代码都采用 C# 编写,但应该可以轻松地翻译为你选择的语言,因为基础框架是 Windows RT。本文档专为想要为其客户编写展台应用的 OEM 和 ISV 而编写。

条款

术语描述

分配的访问权限

允许系统管理员通过限制公开给设备用户的应用程序入口点来管理用户体验的功能。例如,你可以限制你公司的客户仅使用一个应用,以便将你的电脑用作展台。每当有人使用指定帐户登录时,他们仅能使用该应用。他们不能使用触摸手势、鼠标、键盘或硬件按钮切换应用或关闭应用。他们同样看不到任何应用通知。

锁屏界面应用(或锁屏应用)

利用设置动态壁纸功能或利用新的锁屏可扩展性框架的应用程序。

上方锁屏界面应用(或上方锁屏应用)

锁屏界面应用运行时(例如,桌面锁定时),在其上方启动的应用程序。

下方锁屏应用

在已解锁的 Windows 上下文中正常运行的应用程序。

LockApplicationHost

允许上方锁屏界面应用请求设备解锁并允许应用进行注册以便在设备开始解锁时收到系统通知的 WinRT 类。

视图或应用程序视图

每个视图都是应用中的一个独立窗口。应用可以拥有一个主视图,并可根据需要创建多个辅助视图。有关详细信息,请参阅 ApplicationView。

 

在后台

Windows 10 中分配的访问权限可利用新的锁屏框架。当分配的访问权限用户登录时,后台任务将锁定桌面,并且锁屏界面应用将启动,然后运行锁屏上方的展台应用。展台应用实际上作为上方锁屏界面应用运行。

当锁屏框架启动锁屏上方的展台应用时,它将为展台应用创建新的辅助视图,并在新的辅助视图中呈现其所有主视图。

必须在应用程序清单文件中使用 windows.aboveLockScreen 扩展,才能使你的应用显示在“设置”的“分配的访问权限”中。有关应用程序清单的示例,请参阅附录

要点  Windows 10 中“设置”下的“分配的访问权限”应用列表旨在仅显示 Windows 10 UWP(通用 Windows 平台)应用程序,其 UAP 扩展名为 windows.aboveLockScreen

最佳做法

保护你的信息

如果展台应用打算以分配的访问权限并且以正常的方式在锁屏上方运行,则你可能需在已解锁的 Windows 上下文中创建一个要在锁屏上方呈现的不同页面和一个用于锁屏下方的页面。这将使你可以在展台模式下避免显示敏感信息,因为展台模式通常意味着匿名访问。下面是你使用两个不同页面时要遵循的步骤,一个用于锁屏下方,一个用于锁屏上方:

  1. 在 App.xaml.cs 中的 OnLaunched 函数替代内部,尝试在 rootFrame 导航之前获取一个 LockApplicationHost 类的实例。
  2. 如果调用失败,则展台应用应在锁屏下方正常启动。
  3. 如果调用成功,则展台应用应在运行于分配的访问权限模式下的锁屏上方启动。你可能希望此版本的展台应用具有一个不同的主页面,以便隐藏敏感信息。

以下示例将演示如何执行此操作。AssignedAccessPage.xaml 已预定义,而且当应用检测到 AssignedAccessPage.xaml 正在上方锁屏模式下运行时,将导航到该页面。因此,普通页面将仅在下方锁屏方案下显示。

你可以使用此方法确定该应用在其生命周期内是否随时都在锁屏界面上运行并相应地做出响应。

using Windows.ApplicationModel.LockScreen;// inside the override OnLaunched function in App.xaml.csif (rootFrame.Content == null)
{LockApplicationHost host = LockApplicationHost.GetForCurrentView();if (host == null){// if call to LockApplicationHost is null, this app is running under lock// render MainPage normallyrootFrame.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 saferootFrame.Navigate(typeof(AssignedAccessPage), e.Arguments);}
}

多个视图、窗口和线程

请记住,仅主视图或窗口才会在分配的访问权限模式下呈现,但是要呈现在新的辅助视图中。你在应用中创建的任何其他视图将不呈现。请确保你希望用户看到或访问的所有内容都在主窗口中,因为用户无法看到其他视图。

锁屏框架可将展台应用的主视图呈现于新的辅助视图中(它对该应用完全透明)。你不需要手动创建适用于上方锁屏模式的辅助视图,因为锁屏框架会为你创建一个。这意味着你的应用在上方锁屏模式下运行时实际上将有两个视图。当你的应用在分配的访问权限模式下时,在你的主窗口中运行以下代码,以通过查看视图计数和值来确认当前窗口是否为主窗口。

using Windows.ApplicationModel.Core;CoreApplication.GetCurrentView().IsMain //false
CoreApplication.Views.Count //2

下面是示例布局。

Mt633799.Assignedaccesssamplelayout(zh-cn,VS.85).png

调度程序

每个视图或窗口都有其自己的调度程序。在分配的访问权限模式下,不应使用 MainView 调度程序,应改为使用 CurrentView 调度程序。

例如,在以下代码示例中,.xaml 页面上有一个“按钮”和一个 TextBlock。向该按钮添加单击事件处理程序。该处理程序会执行一些后台工作,然后更新 TextBlock的文本。在此示例中使用 CoreApplication.MainView.Dispatcher 将导致应用崩溃,因为在分配的访问权限模式下,主窗口不是 MainView,但在辅助视图中呈现。建议你使用 CoreApplication.GetCurrentView.Dispatcher

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 insteadawait CoreApplication.GetCurrentView().Dispatcher.RunAsync(CoreDispatcherPriority.Normal,async () =>{for (int i = 0; i < 60; ++i){// do some background work, here we use Task.Delay to sleepawait Task.Delay(1000);// update UItextBlock1.Text = "   " + i.ToString();}button.IsEnabled = true;});
}

添加除分配的访问权限之外的方法

在某些情况下,用于停止应用程序的电源按钮、Esc 按钮或其他按钮可能在键盘上无法启用或不可用。在这些情况下,请提供一种方法来停止分配的访问权限,例如软件键。以下事件处理程序显示了如何通过响应可能由软件键触发的按钮单击事件来停止分配的访问权限模式。

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

生命周期管理

如果展台应用意外结束,分配的访问权限框架将尝试重新启动它。如果用户具有对键盘的物理访问权限并按下 Ctrl+Alt+Del 显示登录屏幕,将触发“正在解锁”事件。分配的访问权限框架侦听此事件并将尝试终止展台应用。你的展台应用也可以对此事件注册一个处理程序并退出。有关如何执行此操作的示例,请参阅下面的代码。

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 appApp.Current.Exit();
}

在用户按下 Ctrl+Alt+Del 并且登录屏幕出现后,可能发生以下两个事项:

  1. 用户知道分配的访问权限的帐户密码并解锁桌面。分配的访问权限框架将启动、锁定桌面,而且锁屏界面应用也将启动,从而启动展台应用。
  2. 用户不知道密码,或不会采取任何进一步的操作。登录屏幕将超时,桌面也会重新锁定;锁屏界面应用将启动,从而启动展台应用。

不要在分配的访问权限模式下创建新的窗口或视图

如果在分配的访问权限模式下调用以下函数,则该调用将结束,并带有运行时异常。如果相同的应用(在锁屏下方使用时)调用此函数,则不会导致运行时异常。使用 LockApplicationHost 有助于确定应用的分配的访问权限模式,并相应地对你的应用进行编码,例如,如果应用处于分配的访问权限模式下,则不会创建新的视图。

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

附录

下面是一个示例应用程序清单,你可以看到 windows.aboveLockScreen UAP 扩展名。必须在你的 Windows 10 通用 Windows 平台 (UWP) 应用中使用此扩展名,以便它在“设置”的“分配的访问权限”应用列表中显示。

<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="CN=chandde" Version="1.0.0.0" /><mp:PhoneIdentity PhoneProductId="bd4df68b-dc18-4748-a14e-bc21dac13736" PhonePublisherId="00000000-0000-0000-0000-000000000000" /><Properties><DisplayName>AboveLock</DisplayName><PublisherDisplayName>chandde</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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机工程 目录 2014年第1期 pdf,2013科技核心期刊目录有效期至2014年).pdf

2013科技核心期刊目录有效期至2014年).pdf中国科技核心期刊(中国科技论文统计源期刊)2013CODE 期刊名称2013 年新入选F034 ACTA BIOCHIMICA ET BIOPHYSICA SINICAC096 ACTA MATHEMATICA SCIENTIAB030 ACTA MATHEMATICA SINICA ENGLISH SERIESI051 ACTA MATHEMATICAE APPLICATAE…

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...

今天写了一个excel表的导入功能&#xff0c;结果在excel表中的内容导入到页面时报错&#xff1a;SQL Server 阻止了对组件 Ad Hoc Distributed Queries 的 STATEMENTOpenRowset/OpenDatasource 的访问&#xff0c;因为此组件已作为此服务器安全配置的一部分而被关闭。系统管…

Mongo客户端MongoVUE的基本使用

这里没有涉及到服务器以及客户端的安装&#xff0c;文章主要介绍mongo客户端mongoVUE的使用 一、数据库连接 点击绿色加号添加一个连接&#xff0c;输入name、server、port&#xff0c;点击save&#xff0c;点击connect进行连接 二、添加 1.右键添加一个Database 2.输入名称&am…

Vim杂记:Sublime的配色方案

一、前言                                     爱美之心人皆有之&#xff0c;sublime的配色实在好看&#xff0c;于是希望Vim也能这样。 二、配置                                     1.下载monok…

计算机一级考试有三科,全国计算机一级考试是一级WPS Office 一级MS Office 一级Photoshop 三个任选一个考试吗?...

满意答案nanrrui3j2017.08.24采纳率&#xff1a;41% 等级&#xff1a;9已帮助&#xff1a;415人全国计算机一级考试是有考试大纲的&#xff0c;按照大纲要求是三科都考。一级MS Office、一级WPS Office、一级Photoshop&#xff0c;一级共三个科目。完全采取上机考试形式&…

mysql索引结构原理、性能分析与优化

摘要&#xff1a; 第一部分&#xff1a;基础知识 第二部分&#xff1a;MYISAM和INNODB索引结构 1、简单介绍B-tree B tree树 2、MyisAM索引结构 3、Annode索引结构 4、MyisAM索引与InnoDB索引相比较 第三部分&#xff1a;MYSQL优化 1、表数据类型选择 2、sql语句优化 (1) 最…

Docker学习(三):镜像

2019独角兽企业重金招聘Python工程师标准>>> 1、简介 docker运行前需要本地存在对应的镜像&#xff0c;若镜像不存在本地&#xff0c;docker会先尝试从默认的镜像仓库下载&#xff08;Docker Hub公共注册服务器中的仓库&#xff09;。用户也可以配置&#xff0c;使用…

系统流程图

转载于:https://www.cnblogs.com/ADCARRY/p/5462270.html

一年级下册计算机教学计划,【实用】一年级下册教学计划4篇

【实用】一年级下册教学计划4篇光阴迅速&#xff0c;一眨眼就过去了&#xff0c;我们的教学工作又将抒写新的篇章&#xff0c;写好教学计划才不会让我们努力的时候迷失方向哦。相信大家又在为写教学计划犯愁了吧&#xff0c;下面是小编精心整理的一年级下册教学计划4篇&#xf…

Discretized Streams: An Efficient and Fault-Tolerant Model for Stream Processing on Large Clusters

阅读笔记 概述&#xff1a; 本文同样发表于2012年。提出了一种称为离散化数据流(Discretized Streams,D-Streams)的编程模型。该模型提供了一种高级函数式API&#xff0c;具有高度的一致性和强大的容错能力。基于Spark分布式计算框架&#xff0c;进行扩展实现了一个D-Stream的原…

复习计划

算法 贪心 二分 模拟 倍增 排序 sort 归并排序 插入排序 最短路 SPFA Djistra Floyd 最小生成树 kruskal prim 拓扑排序 tarjan 二分图 树的直径、树的重心 dfs序 hash 数据结构 栈 队列 单调队列 单调栈https://www.luogu.org/problem/show?pid2659 并查集 线段树 树状数组 二…

计算机应用基础分析与报告,y计算机应用基础出题分析报告.doc

y计算机应用基础出题分析报告计算机应用基础出题分析报告本次计算机应用基础抽考试题按照2011年甘肃省三校生高考考试标准&#xff0c;重在考查学生对windows xp和office办公软件基本概念、基本操作的掌握情况。以充分体现基础理论和实践操作相结合为主&#xff0c;深入浅出地将…

mysql left join join right

create table java (name varchar(255)); insert into java values (java1),(java2),(blue); create table mysql (name varchar(255)); insert into mysql values (mysql1),(mysql2),(blue); 1.join 查询 内联查询 查两个表的内才联系相同的值select * from java join mysql a…

PowerDesigner中NAME和COMMENT的互相转换,需要执行语句

原文&#xff1a;http://www.cnblogs.com/yelaiju/archive/2013/04/26/3044828.html由于PDM 的表中 Name 会默认Code 所以很不方便, 所以需要将 StereoType 显示到表的外面来 打开[工具]->[显示属性](英文:Display Preferences) ->Content->Table->右边面板Columns…

成都计算机中心起名,成都给宝宝起名的地方哪里好

成都给宝宝起名的地方哪里好2018-09-21每一个人都拥有一个好听大气的名字&#xff0c;名字作为一个人的标识&#xff0c;是人与人交流的代号&#xff0c;因此有一个好听寓意大气的名字是很关键的&#xff0c;名字毕竟关乎着对他人的第一印象&#xff0c;所以在起名字方面父母们…

20150206--JS巩固与加强4-02

20150206--JS巩固与加强4-02 五、属性遍历与删除 1、使用for…in…遍历自定义对象属性 基本语法&#xff1a; for…in…&#xff08;主要是完成对对象的遍历&#xff09; 示例代码: 运行效果&#xff1a; 说明&#xff1a;在17行代码&#xff0c;不能使用p1.i形式进行自定义对象…

Python安装scikit-learn包

我先是按照网上说的下载了个setuptools,然后直接用这个工具去安装&#xff0c;可是安装scikit-learn包的时候确老是有错误&#xff0c;也不知道错误是啥&#xff0c;所以就不用setuptools来安装了。 我直接下载了scikit-learn包的安装包&#xff0c;直接安装就好了&#xff0c;…

如何计算机械人工作量,修订后太原理工大学本科教学工作量计算办法

太原理工大学教师本科教学工作量计算办法(修订)高等学校实行工作量考核制度是进行教学管理改革的一项重要措施。实践证明&#xff0c;教学工作量考核的实行&#xff0c;有利于稳定教学秩序、提高教学质量&#xff0c;有利于加强师资队伍的建设与管理&#xff0c;有利于保证教学…

面向对象课程 - T-shirt

拿到了一件谜一样的T-shirt 吓得我赶紧捏了下hbb 转载于:https://www.cnblogs.com/andwho/p/5465165.html

java问题

Collection 和 Collections的区别&#xff1f; Collection是集合类的上级接口&#xff0c;继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类&#xff0c;他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 你所知道的集合类都有哪些&a…