如何在软件安装过程中锁定普通(非管理员)用户?


12

我们有许多运行Windows Embedded Standard 7的瘦客户端和一个SCCM 2012 R2服务器来管理它们。瘦客户端启用了写过滤器(FBWF),因此机器更改不会持久。在极少数情况下,我们必须对它们进行更新,我们只需通过SCCM进行部署,它会自动关闭并重新打开写过滤器以提交更改。

这是应该发生的情况:
SCCM客户端会向用户发出通知,并进行30分钟的倒计时,以保存他们的工作并退出系统。瘦客户端然后重新启动并禁用写过滤器。登录屏幕上显示一个挂锁,并注意该设备正在维修中,并且在SCCM执行此操作时将不允许普通(非管理员)用户登录。SCCM完成后,它将重新启用写筛选器,重新启动,然后用户可以再次登录。

我遇到的问题是,我们使用感应卡读取器登录系统。员工不输入密码。他们只是点击他们的徽章。这个系统很好,但是运行它的软件破坏了Windows Embedded的写过滤器自动化。

下面是实际发生的情况:
SCCM客户提供了通常的15分钟预告与写入过滤掉重新启动之前。重新启动后,将显示正常的登录屏幕。当SCCM正在安装软件时,用户可以登录系统并使用它。而且由于用户会话处于活动状态,因此在重新启动写过滤器重新启动之前,它会再次发出30分钟的通知。

在这种情况下,它不仅增加了30分钟的部署时间,而且还为普通用户在瘦客户机上提供了30-60分钟的无保护时间,而无论他们进行什么更改,瘦客户机上所做的任何更改都会永久地写入映像中。写过滤器重新打开。

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

所以这是我的问题:
如何以其他方式模拟所需的行为?我知道有一个组策略设置,您可以在其中拒绝对特定用户组的本地登录。我当时想我可以在安装之前和之后翻转相应的注册表设置,但是我对其他想法持开放态度。

如果需要的话,我没有安装脚本。我精通脚本,PowerShell,VBScript等。我只是想知道是否有人对如何解决这个问题有任何聪明的主意。


更新:
我忽略了提及这些设备在医院环境中使用,以便工作人员绘制患者病历。它们必须一天24小时可用,因此我们不能限制登录时间或配置维护时段。我们通过提前通知值班主管来管理停机时间,但是任何花费一个多小时的事情都会成为法律合规性问题,并且需要正式的停机程序才能生效。


好问题。我希望我有一个更好的答案。

好问题-希望您的悲惨经历会阻止其他人购买瘦客户机-我讨厌这些“维护
Jim B

Answers:


4

在我们开始之前,我想提出一个观点,更多的是为普通读者而不是您自己。

我们只是通过SCCM推送

SCCM是基于拉的技术。我知道您的意思,但我发现与我的1级人员一起,我每一次强调SCCM都不是基于推送的技术的机会可以帮助他们更快地理解它。


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

这太糟糕了,因为听起来像是此问题的原因是嵌入式卡身份验证程序。继续与供应商联系,也许他们实际上会修复他们的软件。



真正的答案-我为您找到了一些可能的解决方案,但没有一个特别好。

  • 为这些客户端配置一个维护窗口,以便您的初始重新启动将客户端从其写过滤器中删除,您的实际有效负载以及随之而来的重新启动都将在非员工在终端上班的非工作时间进行。这似乎是最不痛苦的选择。无需使SCCM变得比现在更加复杂。
  • 创建一个本地组策略模板,该模板将安全组添加到“拒绝登录用户权限”,然后在应用程序部署中对其进行分配/取消分配。
  • 使用PowerShell设置“拒绝登录用户权限”。我相信PowerShell社区扩展(PSCX)具有Set/Get-Privilegescmdlet,可让您操纵用户权限分配
  • 您可以根据需要使用API​​。这是一个例子

感谢您的回复。我更新了问题以反映环境。这是24x7的操作,因此选项1不可行。选项2是我的想法,但是我不知道一种按需分配/取消分配GPO的方法。剩下的选项3和4我将研究。我想我可能必须为此编写脚本。哦,我更正了这个术语:-)
Wes Sayeed

@WesSayeed从理论上讲,您应该能够使用SecPol.msc 创建本地组策略模板,将它们另存为模板,并secedit.exe通过脚本进行应用/取消应用。我说的不是使用Active Directory组策略,因为随机轮询时间对您的紧凑维护时段不起作用。

+1,我喜欢这个答案,但不知道PSCX。
MDMoore313

4

似乎没有人谈到使用任务序列来处理此问题的可能性,因此请允许我列出这些好处(假设您一般并不真正了解它们,但即使您确实也请阅读):

如果使用SCCM处理了安装和配置的所有内容,则应该能够使用任务序列来完成此任务。主要针对OSD,使用TS不仅适用于OSD,而且可以提供以下好处:

无需登录工作站

TS将在winlogon.exe运行之前执行,因此不会有用户无意登录的情况,因为没有登录窗口。这使我想起第二点:

自定义背景屏幕

您可以提供一个初始屏幕,指出正在执行维护,或者说您真正想说的话。

TS实际上只是美化的脚本,但是它具有很多功能,并且以减少开发时间的方式组合在一起,而且我发现OSD以外的用例。

听起来您已经有一个脚本来完成您需要做的事情,因此您应该能够以最少的调试将其放入TS中。


1
+1我一直想知道非OSD任务序列是否有实际用途。
alx9r

@BigHomie; 我只是尝试使用任务序列而不是普通应用程序进行部署,但这并没有阻止用户登录。任务序列中的第一步是重新启动计算机。计算机重新启动后,将显示正常的登录屏幕。直到大约一分钟后,任务序列才会恢复(因为该服务被设置为延迟启动)。我可以将服务设置为立即从组策略启动,以便用户可以看到进度条,但这只会阻止登录,而不会阻止登录。我想念什么吗?
Wes Sayeed 2016年

@WesSayeed !! 该TS是否已发布给用户或计算机?
MDMoore313 '16

@BigHomie; AFAIK,任务序列只能发布到计算机集合中。
Wes Sayeed

是的,我忘记了。不幸的是,我去年接受了一份新工作,已经离开SCCM游戏已有相当一段时间了。尽管我将继续寻找答案,但是我认为允许在OSD之外也可以使用在OSD期间登录屏幕之前安装软件的相同机制。我想如果机器启动到WinPE,就无法完成部署,对吗?
MDMoore313 '16

2

您尚未指定SSO软件是否使用Active Directory凭据,因此一种解决方案是利用Active Directory的“登录时间”功能。它是针对每个用户的,但是可以轻松地在Powershell中编写脚本(是一个示例)。基本上,在SCCM更新窗口中将登录时间设置为“拒绝”登录,而在SCCM执行其操作时,用户将无法登录到客户端。您需要首先强制重启,这将使他们注销(登录时间功能不适用于已登录的用户),但是否则实施起来会很轻松。


SSO软件确实使用AD。它所做的一切都将RFID标签与AD帐户匹配,并将凭据传递给Windows以执行登录。我更新了答案,以解释为什么我不能使用登录时间(忽略了环境),但是我将看看您引用的脚本。我也许可以在本地做类似的事情。
Wes Sayeed 2015年

-1

可能要测试一下,看看是否可行:

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

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

在末尾:

将您删除的安全主体重新添加到本地“用户”组中

您添加/删除的实际组可能取决于当前配置计算机的方式。

SCCM活动的开始可能有点拖尾,但是可以将logoff.exe的快捷方式复制到All Users开始菜单\启动文件夹(通常为C:\ ProgramData \ Microsoft \ Windows \开始菜单\ Programs \ StartUp)。一旦登录,这将具有注销会话的效果。为了安全起见,您可能需要一个启动/关闭脚本来删除该快捷方式。(我认为在登录过程中按住Shift键可以跳过启动快捷方式)。


我必须将其设置为-1,这是可行的,但是如果脚本由于某种随机错误或墨菲定律而在中间被杀死,那么用户将无法登录,并且在IT部门做出响应之前就死定了。
MDMoore313
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.