如何在软件安装期间locking正常(非pipe理员)用户?

我们有很多运行Windows Embedded Standard 7的瘦客户机和一个SCCM 2012 R2服务器来pipe理它们。 瘦客户机启用了写入filter(FBWF),因此机器更改不会持久。 在极less数情况下,我们必须更新它们,我们只需通过SCCM进行部署,它会自动closures写入filter并重新提交更改。

以下是应该发生的事情:
SCCM客户通知用户并进行30分钟的倒计时,以保存他们的工作并下车。 瘦客户机然后重新启动并禁用写入filter。 login屏幕显示一个挂锁,并注意到该单元正在服务,并且不会允许正常(非pipe理员)用户login,而SCCM正在做这件事情。 当SCCM完成后,它将重新启用写入filter,重新启动,然后用户可以再次login。

我遇到的问题是我们使用感应卡读卡器login系统。 员工不input密码。 他们只是挖掘他们的徽章。 这个系统很好,但运行它的软件打破了Windows Embedded的写入filter自动化。

这是实际发生的事情:
在重新启动写入filter之前,SCCM客户端通常会提供15分钟的通知。 重新启动时,会显示正常的login画面。 用户可以login系统并在SCCM安装软件时使用它。 而且由于用户会话处于活动状态,因此在重新启动写入筛选器之前,再次发出30分钟通知。

在这种情况下,它不仅增加了额外的30分钟的部署时间,而且还使普通用户在瘦客户机上保持30-60分钟的无保护时间,写入filter重新打开。

这个问题源于Windows Embedded 7使用与常规Windows 7不同的凭据提供程序(又名GINA),但SSO产品必须replaceWindows凭据提供程序才能正常工作。 我已经联系了这个供应商,但他们只是说这是一个已知的问题,没有修复或解决方法。

所以这是我的问题:
我怎样才能以另一种方式模拟所需的行为? 我知道有一个组策略设置,您可以拒绝本地login到特定的用户组。 我以为我可以在安装前后翻转相应的registry设置,但我愿意接受其他的想法。

如果必须,我不在脚本安装之上。 我很stream利的脚本,PowerShell,VBScript等,我只是想知道如果有人有任何明智的想法如何解决这个问题。


更新:
我忽略了提及这些设备正在医院环境中用于工作人员对病人进行图表。 它们必须一天24小时提供,所以我们不能限制login时间或configuration维护窗口。 我们通过提前通知轮class主pipe来pipe理停机时间,但是超过一个小时的任何事情都会成为合法合规问题,并且需要执行官方停机时间程序。

在我们开始之前,我想提出一个迂腐的观点,更多是为了一般读者的利益。

我们只是通过SCCM推送它

SCCM是一种基于拉式的技术。 我知道你的意思,但是我发现,对于我的第一级人员来说,我所能得到的每一个机会都强调SCCM不是一个基于推送的技术,可以帮助他们更快地理解它。

我已经联系了这个供应商,但他们只是说这是一个已知的问题,没有修复或解决方法

这太糟糕了,因为听起来这个问题的原因是embedded式卡authentication程序。 继续供应商,也许他们会真正修复他们的软件。

谈到一个真正的答案 – 我看到了一些可能的解决scheme,没有一个特别好。

  • 为这些客户端configuration一个维护窗口,以便在员工不在terminal时,在您的首次重新启动时将客户端从其写入filter,实际有效负载以及由此产生的重新启动都发生。 这似乎是最不痛苦的select。 没有必要使SCCM比现在更复杂。
  • 创build本地组策略模板,将安全组添加到拒绝login用户权限,然后将其分配/取消分配为应用程序部署的一部分。
  • 使用PowerShell设置拒绝login用户权限。 我相信PowerShell社区扩展(PSCX)具有Set/Get-Privileges cmdlet,可让您操作用户权利指派
  • 你可以使用API​​。 这是一个例子 。

似乎没有人触及使用任务序列来处理这个问题的可能性,所以请允许我列出一些好处(假设你一般不太熟悉它们,但是即使你是这样,也请阅读):

如果您安装和configuration的所有内容都是使用SCCM处理的,则应该可以使用任务序列来完成此操作。 主要用于OSD,使用TS 不仅可以用于OSD,还可以提供以下好处:

没有login到工作站

TS在winlogon.exe运行之前执行,所以不会有用户无意中login,因为没有login窗口。 这使我想到了第二点:

自定义背景屏幕

您可以提供一个启动屏幕,说明正在执行维护,或者您想要的任何内容。

一个TS实际上只是一个荣耀的脚本,但是它有很多function,并且以减less开发时间的方式放在一起,我发现了OSD以外的用例。

听起来你已经有了一个脚本来完成你所需要做的事情,所以你应该能够用最less的debugging把它放到TS中去。

您尚未指定SSO软件是否使用Active Directory凭据,因此解决scheme是使用Active Directory的“login时间”function。 这是在每个用户级别,但可以很容易地在Powershell( 这是一个例子)脚本。 基本上,在SCCM更新窗口中将login时间设置为“拒绝”login,并且SCCM执行其操作时,用户将无法login到客户端。 您需要先进行强制重新启动才能将其注销(login小时数function对login用户不起作用),但实施起来可能很轻松。

可能要testing这个,看看它是否工作:

SCCM活动开始时的一个脚本来执行以下操作:

  • 从本地用户组删除NT AUTHORITY \ Authenticated Users标识
  • 从本地用户组中删除NT AUTHORITY \ Interactive身份
  • 从本地用户组中删除域用户组

最后:

将您删除的安全主体添加回本地用户组

您添加/删除的实际组可能取决于您的计算机当前如何configuration。

一些更多的拖车 – 派克,SCCM活动的开始可以将快捷方式复制到所有用户开始菜单\ Startup文件夹(通常是C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ StartUp)logoff.exe。 这将会在login后立即注销会话。 为了安全起见,您可能需要启动/closures脚本来删除该快捷方式。 (我相信在login过程中按住shift键可以跳过启动快捷方式)。