如何在軟體安裝過程中鎖定普通(非管理員)使用者?

如何在軟體安裝過程中鎖定普通(非管理員)使用者?

我們有很多運行 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 小時可用,因此我們無法限制登入時間或配置維護時段。我們透過提前通知值班主管來管理停機時間,但任何需要超過一個小時的時間都會成為法律合規問題,需要執行官方的停機程序。

答案1

在我們開始之前,我想提出一個迂腐的觀點,更多的是為了一般讀者而不是為了你自己。

我們只是透過 SCCM 推送它

SCCM 是一種基於拉動的技術。我知道您的意思,但我發現對於我的一級人員來說,每次我有機會強調 SCCM 不是基於推送的技術,都可以幫助他們更快地理解它。


我已就此問題聯繫了供應商,但他們只是說這是一個已知問題,並且沒有修復或解決方法

這太糟糕了,因為聽起來這個問題的原因是嵌入式卡片身份驗證程式。繼續關注供應商,也許他們真的會修復他們的軟體。



關於真正的答案 - 我為您找到了一些可能的解決方案,但沒有一個特別好。

  • 為這些用戶端配置維護窗口,以便您首次重新啟動以將客戶端從其寫入過濾器中刪除、您的實際負載以及由此產生的重新啟動都發生在員工不在終端的非工作時間。這似乎是最不痛苦的選擇。無需讓 SCCM 變得比現在更複雜。
  • 創建一個本地群組原則將安全群組新增至拒絕登入使用者權限的模板,然後將其指派/取消指派作為應用程式部署的一部分。
  • 使用 PowerShell 設定拒絕登入使用者權限。我相信PowerShell 社群擴展 (PSCX)具有Set/Get-Privileges可讓您操縱使用者權限指派的 cmdlet
  • 如果需要,您可以使用 API。這是一個例子

答案2

似乎沒有人觸及使用任務序列來處理此問題的可能性,因此請允許我列出其好處(假設您通常不太熟悉它們,但即使您熟悉,也請閱讀):

如果您安裝和設定的所有內容都是透過 SCCM 處理的,那麼您應該能夠使用任務序列來完成此任務。主要用於 OSD,使用 TS 不是僅有的用於 OSD,可以提供以下好處:

沒有登入工作站

TS 在 winlogon.exe 運行之前執行,因此使用者不可能無意中登錄,因為沒有登入視窗。這引出了我的第二點:

自訂背景螢幕

您可以提供一個閃屏,顯示正在執行維護,或任何您想要顯示的內容。

TS 實際上只是一個美化的腳本,但它具有許多功能,並且以減少開發時間的方式組合在一起,而且我發現了 OSD 之外的用例。

聽起來您已經有了腳本來完成您需要完成的工作,因此您應該能夠透過最少的偵錯將其放入 TS 中並開始運行。

答案3

您尚未指定 SSO 軟體是否使用 Active Directory 憑證,因此解決方案是利用 Active Directory 的「登入時間」功能。它處於每個使用者級別,但可以輕鬆地在 Powershell 中編寫腳本(就是一個例子)。基本上,將登入時間設定為在 SCCM 更新視窗中「拒絕」登錄,並且在 SCCM 執行其操作時使用者將無法登入用戶端。您需要先強制重新啟動,這會將它們登出(登入時間功能對登入使用者不起作用),但否則實施起來會很輕鬆。

答案4

可能想測試一下它是否有效:

SCCM 活動開始時的腳本用於執行以下操作:

  • 從本機使用者群組中刪除 NT AUTHORITY\Authenticated Users 身份
  • 從本機使用者群組中刪除 NT AUTHORITY\Interactive 身份
  • 從本機用戶群組中刪除網域用戶群組

在最後:

將您刪除的安全主體新增回本機使用者群組

您新增/刪除的實際群組可能取決於您的電腦目前的配置方式。

更誇張的是,SCCM 活動的開始可以將 logoff.exe 的捷徑複製到所有使用者開始功能表\啟動資料夾(通常為 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)。這會產生登入後立即登出會話的效果。為了安全起見,您可能需要一個啟動/關閉腳本來刪除該捷徑。 (我相信在登入期間按住 Shift 鍵可以繞過啟動快捷方式)。

相關內容