win10 使用PowerShell 设置单应用kiosk模式

win10 家版或企业版PowerShellshell 启动器 v1Autologon.exe

注意事项

  • win10 家庭版或企业版。
  • 下载安装Autologon.exe。
  • Shell 启动器 v1调用的应用程序不可有黑窗(类似cmd)。
  • 以下示例采用账号:
    - 账户:'KIOSK'
    - 密码:'KIOSK'

设置步骤

新建用户

1.进入windows设置->账户->其他用户,点击'将其他人添加到这台电脑';

2.右键用户,点击新用户,如图下操作:

下载并执行Autologon.exe:自动输入 Windows 登录用户密码

  1. 开启功能:输入正确账号和密码后,点击图片'Enable'。
  2. 关闭功能:输入正确账号后,点击图片‘Disable’。

使用 PowerShell 配置自定义 shell

新建文件'kiosk.ps1'(文件名随意)

'kiosk.ps1'文件内容

1. 文件内部关于'KIOSK'的地方都要修改成你新建用户的名称。
2. 文件内部'$ShellLauncherClass.SetCustomShell'第二个参数为调用程序的路径。
3. 文件最后有3段代表'开启','删除','禁用',需要使用其中一个功能的时候,一定要注释其他两段,如下。

  1 # Check if shell launcher license is enabled
2 function Check-ShellLauncherLicenseEnabled
3 {
4 [string]$source = @"
5 using System;
6 using System.Runtime.InteropServices;
7
8 static class CheckShellLauncherLicense
9 {
10 const int S_OK = 0;
11
12 public static bool IsShellLauncherLicenseEnabled()
13 {
14 int enabled = 0;
15
16 if (NativeMethods.SLGetWindowsInformationDWORD("EmbeddedFeature-ShellLauncher-Enabled", out enabled) != S_OK) {
17 enabled = 0;
18 }
19
20 return (enabled != 0);
21 }
22
23 static class NativeMethods
24 {
25 [DllImport("Slc.dll")]
26 internal static extern int SLGetWindowsInformationDWORD([MarshalAs(UnmanagedType.LPWStr)]string valueName, out int value);
27 }
28
29 }
30 "@
31
32 $type = Add-Type -TypeDefinition $source -PassThru
33
34 return $type[0]::IsShellLauncherLicenseEnabled()
35 }
36
37 [bool]$result = $false
38
39 $result = Check-ShellLauncherLicenseEnabled
40 "`nShell Launcher license enabled is set to " + $result
41 if (-not($result))
42 {
43 "`nThis device doesn't have required license to use Shell Launcher"
44 exit
45 }
46
47 $COMPUTER = "localhost"
48 $NAMESPACE = "root\standardcimv2\embedded"
49
50 # Create a handle to the class instance so we can call the static methods.
51 try {
52 $ShellLauncherClass = [wmiclass]"\\$COMPUTER\${NAMESPACE}:WESL_UserSetting"
53 } catch [Exception] {
54 write-host $_.Exception.Message;
55 write-host "Make sure Shell Launcher feature is enabled"
56 exit
57 }
58
59
60 # This well-known security identifier (SID) corresponds to the BUILTIN\Administrators group.
61
62 $Admins_SID = "S-1-5-32-544"
63
64 # Create a function to retrieve the SID for a user account on a machine.
65
66 function Get-UsernameSID($AccountName) {
67
68 $NTUserObject = New-Object System.Security.Principal.NTAccount($AccountName)
69 $NTUserSID = $NTUserObject.Translate([System.Security.Principal.SecurityIdentifier])
70
71 return $NTUserSID.Value
72
73 }
74
75 # Get the SID for a user account named "KIOSK". Rename "KIOSK" to an existing account on your system to test this script.
76
77 $KIOSK_SID = Get-UsernameSID("KIOSK")
78
79 # Define actions to take when the shell program exits.
80
81 $restart_shell = 0
82 $restart_device = 1
83 $shutdown_device = 2
84
85 # Examples. You can change these examples to use the program that you want to use as the shell.
86
87 # This example sets the command prompt as the default shell, and restarts the device if the command prompt is closed.
88
89 $ShellLauncherClass.SetDefaultShell("cmd.exe", $restart_device)
90
91 # Display the default shell to verify that it was added correctly.
92
93 $DefaultShellObject = $ShellLauncherClass.GetDefaultShell()
94
95 "`nDefault Shell is set to " + $DefaultShellObject.Shell + " and the default action is set to " + $DefaultShellObject.defaultaction
96
97 # Set Internet Explorer as the shell for "KIOSK", and restart the machine if Internet Explorer is closed.
98
99 $ShellLauncherClass.SetCustomShell($KIOSK_SID, "c:\program files\internet explorer\iexplore.exe www.microsoft.com", ($null), ($null), $restart_shell)
100
101 # Set Explorer as the shell for administrators.
102
103 $ShellLauncherClass.SetCustomShell($Admins_SID, "explorer.exe")
104
105 # View all the custom shells defined.
106
107 "`nCurrent settings for custom shells:"
108 Get-WmiObject -namespace $NAMESPACE -computer $COMPUTER -class WESL_UserSetting | Select Sid, Shell, DefaultAction
109
110 # Enable Shell Launcher
111
112 $ShellLauncherClass.SetEnabled($TRUE)
113
114 $IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()
115
116 "`nEnabled is set to " + $IsShellLauncherEnabled.Enabled
117
118 # Remove the new custom shells.
119
120 #$ShellLauncherClass.RemoveCustomShell($Admins_SID)
121
122 #$ShellLauncherClass.RemoveCustomShell($KIOSK_SID)
123
124 # Disable Shell Launcher
125
126 #$ShellLauncherClass.SetEnabled($FALSE)
127
128 #$IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()
129
130 #"`nEnabled is set to " + $IsShellLauncherEnabled.Enabled

管理员权限执行.ps1文件

编程好.ps1文件,使用管理员权限在'powerShell'上执行该文件,显示如下结果表示成功。

用户SID查询

powerShell执行'wmic useraccount get name,sid'即可,如下。

重启开机

重启开机后,黑屏,只显示唯一调用的程序界面。

相关连接

WIN10 使用POWERSHELL 设置单应用KIOSK模式(win10家庭版或企业版)的更多相关文章

  1. WIN10 使用注册表设置单应用KIOSK模式(不限win10版本)

    注意事项 下载安装Autologon.exe. 以下示例采用账号:- 账户:'KIOSK'- 密码:'KIOSK' 设置步骤 新建用户 1.进入windows设置->账户->其他用户,点击 ...

  2. 《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  3. Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式

    Atitit 全屏模式的cs桌面客户端软件gui h5解决方案 Kiosk模式 1.1. Kiosk Software广泛用于公共电脑或者嵌入系统,最常用的就是ATM机.自动服务机之类的系统了.,1 ...

  4. JavaScript 设计模式之----单体(单例)模式

    设计模式之--单体(单例)模式 1.介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现.OK,正式开始. 在传统开发工 ...

  5. 在Android上启用Kiosk模式

    我们的云帆机器人(上面运行的安卓程序)有一个线下场景是商场,由于商场人多,总会遇到一些用户在我们的app里乱点,然后会跳出程序进入到系统设置的一些界面,这样很不友好. 比如程序中有一些需要输入文字的地 ...

  6. win2003设置单用户登录

    远程桌面是windows操作系统中一个很方便的功能,管理测试机资产.异地排除故障等,都很快捷.在windows xp sp2模式下,一般默认是单用户登录,也就是当A用户远程一台机器时,B用户在远程到这 ...

  7. 选择设置好ext3日志模式

    Linux是一种开放的.因Internet而产生的操作系统.Internet的发展.以网络为中心的计算模式如电子商务被迅速接受和普及,都为 Linux提供了更巨大的机会,使之成为企业和部门级的首选平台 ...

  8. [OpenStack] [Liberty] Neutron单网卡桥接模式访问外网

    环境配置: * Exsi一台 * Exsi创建的单网卡虚拟机一台 * Ubuntu 14LTS 64位操作系统 * OpenStack Liberty版本 * 使用Neutron网络而非Nova网络 ...

  9. ccflow_005.请假流程-傻瓜表单-审核组件模式

    ccflow_005.请假流程-傻瓜表单-审核组件模式 ' 用审核组件演示各个流程应用 首先设置节点,填写请假单的 表单方案.选择内置傻瓜表单.我们之前创建的表单就回来了. 可以点击下面的设计傻瓜表单 ...

随机推荐

  1. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的.例如,对于如下语句: final StringBuilder a=new StringBuilder ...

  2. 详细描述一下 Elasticsearch 搜索的过程?

    想了解 ES 搜索的底层原理,不再只关注业务层面了. 解答: 搜索拆解为"query then fetch" 两个阶段. query 阶段的目的:定位到位置,但不取. 步骤拆解如下 ...

  3. spring cloud 断路器的作用是什么?

    在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待.这样就不会使得线程因 ...

  4. Java中的引用类型

    强引用(Strong) 就是我们平时使用的方式 A a = new A();强引用的对象是不会被回收的 软引用(Soft) 在jvm要内存溢出(OOM)时,会回收软引用的对象,释放更多内存 弱引用(W ...

  5. scrapy基于请求传参实现深度爬取

    请求传参实现深度爬取 请求传参: 实现深度爬取:爬取多个层级对应的页面数据 使用场景:爬取的数据没有在同一张页面中 在手动请求的时候传递item:yield scrapy.Request(url,ca ...

  6. C语言之main方法解析(知识点1)

    1.注释       /*自带注释*/2.引包       #include <stdio.h>3.主方法    void main{}4.执行体     printf("打印& ...

  7. DateFormat类,利用SimpleDateFormat解决系统时间初始(格式化/解析)问题

    目标: java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换. 格式化 ...

  8. 检查浏览器支持Webp

    什么是Webp? Webp 是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这 ...

  9. 微信小程序安全浅析

    引言 近期微信小程序重磅发布,在互联网界掀起不小的波澜,已有许多公司发布了自己的小程序,涉及不同的行业领域.大家在体验小程序用完即走便利的同时,是否对小程序的安全性还存有疑虑.白泽日前对微信小程序进行 ...

  10. Python窗口学习之监听窗口变化触发函数

    在窗口大小发生变化后,往往组件也需要调整 代码: #空间适应屏幕 def window_resiz(self,event=None): print(window.winfo_height()) pri ...