XP Embedded:不同的用户使用不同的外壳程序
?
摘要:
能夠使應用程序成為外殼程序是 Windows XP Embedded 的關鍵功能之一。設備可以在自定義外殼程序而不是 Explorer 外殼程序中啟動,這提供了兩個好處。第一個好處是系統能夠更快地啟動。Explorer 外殼程序需要花費大量的時間來加載所有支持庫和文件,而特定應用程序很可能需要加載較少的庫。第二個好處是可以限制對設備的管理功能的訪問,這完全取決于自定義外殼程序應用程序的編寫方式。
限制用戶對管理功能(例如,控制面板)的訪問可能是好處,但存在一個小的缺點:管理員也會受到限制,除非管理員可以在不同的外殼程序中啟動。
理想的解決方案是對 Windows XP Embedded 進行相應的設置,以便用戶帳戶可以在應用程序外殼程序中啟動,而管理員帳戶可以在管理外殼程序中啟動。然后,Windows XP Embedded 中內置的安全性功能就可以防止用戶訪問管理功能。本文說明如何實現該解決方案。
?
本頁內容
注冊表是關鍵所在
工作原理
Windows XP Embedded 的設置
附注
小結
注冊表是關鍵所在
Microsoft? Windows? XP 具有能夠通過注冊表提供解決方案的功能。可以設置每個用戶帳戶和管理員帳戶的注冊表以啟動用戶特有的外殼程序。有三個必須設置的項。頭兩個項是所有用戶通用的。為了簡單起見,本文將這些項稱為“Key1”、“Key2”和“Key3”。
Key1 是字符串值。當 Windows XP 啟動時,會調用 Key1 并啟動默認的 Windows 外殼程序。但是,如果默認值被更改為 USR:Software/Microsoft/Windows NT/CurrentVersion/Winlogon,則Windows 會探測 HKEY_Current_User 項以便為登錄的用戶啟動特定的外殼程序。如果未找到特定的用戶外殼程序,則會調用 Key2 并啟動默認的外殼程序。
項: HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/IniFileMapping/system.ini/boot/Shell類型: REG_SZ
值: SYS:Microsoft/Windows NT/CurrentVersion/Winlogon
如果找不到用戶外殼程序應用程序,則 Key2 會提供默認的外殼程序。當您為 Microsoft Windows XP Embedded 配置選擇外殼程序組件時,Key2 就被設置為作為默認外殼程序的外殼程序應用程序。
項: HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell類型: REG_SZ
值:Explorer.exe(或者可以是不同的默認應用程序)
Key3 為當前用戶或登錄用戶設置外殼程序。因而,更改特定用戶的外殼程序的唯一方式是登錄用戶帳戶并創建該注冊表條目。
項: HKEY_Current_User/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell類型: REG_SZ
值:c:/windows/system32/ account shell.exe,其中, account shell.exe 是應用程序的名稱。
返回頁首工作原理
當用戶登錄時,Windows 使用 Key1 確定哪個項保存了外殼程序信息。通常,Windows 會接下來使用 Key2。但是,如果 Key1 的值更改為 USR:Software/Microsoft/Windows NT/CurrentVersion/Winlogon,則 Windows 會為登錄用戶使用 Key3,以啟動該用戶的特定外殼程序。
在已經設置了注冊表的系統中更改注冊表項值相當簡單。困難在于如何在 Windows XP Embedded 中完成該工作 — 在該平臺上,注冊表是在 First Boot Agent (FBA) 過程中設置的。
可以在目標設計器中設置 HKLM 項,因為它們是計算機特有的。但是,在目標設計器中設置 HKCU 項是不可能的,因為在 FBA 運行之前不會創建帳戶。用戶帳戶和管理員帳戶組件只創建帳戶、用戶名稱和密碼。這些組件無法用來設置特定的外殼程序。唯一的解決方案是在 Windows XP Embedded 映像已經完成 FBA 過程之后再設置特定的外殼程序。
返回頁首Windows XP Embedded 的設置
在 Windows XP Embedded 中為不同用戶生成不同外殼程序的竅門存在于設置之中。需要在配置中包含幾個組件,以便可以為用戶的帳戶設置 Key3:
-
Windows Logon。因為映像中將包含不同的帳戶,所以 Windows Logon (Standard) 是配置的必需組件。Windows Logon 支持在本地和遠程登錄不同帳戶的能力。相比之下,Minlogon 組件只支持登錄單個管理員帳戶。
-
兩個 User Account 組件。至少需要兩個計算機帳戶;其中至少有一個帳戶必須是管理員帳戶。可以通過“Extended Properties”頁將 User Account 組件設置為管理員帳戶。當用戶帳戶被設置為管理員帳戶時,它會替換普通的“Administrator”帳戶,就像在其他版本的 Windows XP 中一樣。因為消除了管理員帳戶,所以您可能希望考慮使用兩個 User Account 組件實例。可以將一個組件設置為管理員(它將具有管理員外殼程序),并且可以將另一個組件設置為正規用戶(它將具有系統外殼程序)。
-
Automatic Logon。大多數原始設備制造商 (OEM) 都希望它們的系統直接在應用程序中啟動。可以將 Automatic Logon 組件添加到配置中,以便直接在用戶帳戶(它的外殼程序將是系統的應用程序)中啟動。
-
Default Shell。Windows XP Embedded 附帶了幾個外殼程序:Explorer、Task Manager 和 Command。您還可以創建自定義外殼程序。外殼程序組件是配置中必需的。在為配置選擇外殼程序組件時,外殼程序將是 Windows XP Embedded 映像的默認外殼程序,因此無須設置 Key2。
對于為不同用戶設置不同的外殼程序而言,所選擇的外殼程序組件將是管理員外殼程序,并且該外殼程序必須允許配置注冊表以設置 Key3 的訪問權限。Task Manager 可能是一個不錯的選擇。TaskManager 是一個小型外殼程序,可以用來啟動其他應用程序,如 Control.exe(控制面板)或 Regedit.exe(注冊表編輯器)。如果 TaskManager 外殼程序不合適,則您可能希望創建您自己的管理外殼程序。在 FBA 過程完成之后,所有帳戶都將具有相同的管理員外殼程序。然后,就可以登錄任何帳戶并設置 Key3 了。
-
User Shell。最后一個組件是用戶或系統應用程序,它將是輔助外殼程序。不應當將輔助外殼程序組件設置為外殼程序組件,或者將其與其他外殼程序組件組合在一起。而是應該像對待任何其他應用程序組件(例如,Windows Accessories 或傳輸控制協議/Internet 協議 (TCP/IP) 實用工具)一樣對待輔助外殼程序組件。在 FBA 完成之后,可以登錄用戶帳戶并且將 Key3 設置為指向應用程序。如果應用程序組件丟失,則將顯示默認的管理員外殼程序組件。
-
其他組件。可以包含 Windows 腳本引擎和注冊表編輯器以幫助創建 Key3。可以創建自定義應用程序以執行該任務。
設置 Key1
必須設置 Key1。在位于配置頂部的 Extra Registry Data 中,如前所述添加 Key1,并且設置 USR:Software/Microsoft/Windows NT/CurrentVersion/Winlogon 的值。要查看 Extra Registry Data 資源,可能必須采用以下方法啟用資源:單擊 View,指向 Resources,然后單擊 Target Designer。
在設置、生成配置并將其下載到目標并且 FBA 過程完成之后,最后的步驟是為系統外殼程序設置用戶帳戶。因為最初將映像設置為在管理員外殼程序中啟動,所以您應當能夠訪問注冊表。
設置 Key3
要用唯一的外殼程序設置用戶帳戶,必須登錄該用戶帳戶,并且添加 Key3 以設置系統應用程序的路徑。請注意,無法登錄管理員帳戶以更改用戶帳戶的外殼程序。在登錄用戶帳戶之后,可以使用 Regedit.exe、Windows 腳本或其他應用程序來創建 Key3 并設置應用程序的路徑。
下面是一個 WScript 示例。
'Windows Script to set a user shell set shell = CreateObject("WScript.shell") shellpath = InputBox ("Enter the path and name of the EXE application to be this user's shell. Example: c:/windows/system32/cmd.exe:") if shellpath <> "" then Shell.RegWrite "HKCU/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell", shellpath, "REG_SZ"下面是一個 CScript 示例。
'Windows Script to set a user shell set shell = CreateObject("WScript.shell") wscript.stdout.WriteLine "Change the Shell for this user." wscript.stdout.WriteLine ChangeReg sub ChangeReg wscript.stdout.WriteLine "Enter the path and name of the EXE application to be this user's shell." wscript.stdout.WriteLine "Example: c:/windows/system32/cmd.exe or type QUIT to exit: " if wscript.stdin.AtEndOfStream then exit sub shellpath = wscript.stdin.ReadLine if ucase(shellpath) = "QUIT" then exit sub Shell.RegWrite "HKCU/Software/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell", shellpath, "REG_SZ" wscript.stdout.WriteLine "User will now have a new shell" wscript.stdout.WriteLine end sub在設置 Key3 之后,可以注銷并重新登錄用戶帳戶和/或管理員帳戶。當您登錄用戶帳戶時,用戶帳戶的特定外殼程序將啟動。當您登錄管理員帳戶時,默認/管理員外殼程序將啟動。
返回頁首附注
默認情況下,針對 WScript 設置 Windows 腳本引擎。WScript 使用對話框來顯示輸入和輸出消息。CScript 只使用命令提示,這對于無頭系統是理想的。只能從管理員帳戶更改到 CScript。如果您決定使用 Windows 腳本引擎,則必須為 Microsoft Visual Basic? Scripting Edition (VBScript) 文件修改 Windows 腳本引擎組件的注冊表數據。更改 HKEY_CLASSES_ROOT/VBSFile/Shell/Open/Command 并將 %1 添加到值 %11%/WScript.exe 的結尾,如圖 1 所示。
圖 1. 更改 Windows 腳本引擎組件的注冊表值在創建 Key3 之后,可以重新登錄用戶帳戶并查看帳戶的新外殼程序。當您登錄管理員帳戶時,默認的或管理員外殼程序仍將啟動。
如果您使用的是遠程管理功能,請注意 Telnet 允許一個以上的用戶登錄同一計算機,但是遠程桌面連接或 Microsoft NetMeeting? 只允許一個用戶登錄計算機。遠程桌面連接獲得對桌面的控制并且將用戶從系統中注銷。如果您打算使用遠程桌面連接,則您的系統不得受到管理員登錄和用戶帳戶注銷的影響。
此外,在設置 Key3 之后,可以使用 FBreseal(包含在 Cloning 組件中)重封映像以便進行復制。用戶帳戶的注冊表項信息將被保留。
返回頁首小結
Windows XP Embedded 提供了一種靈活的方式,以便將流行的 Windows XP 操作系統部署到許多嵌入式設備中。由于能夠具有兩個帶有不同外殼程序的帳戶,因此 OEM 能夠生成可防止用戶意外訪問管理功能的系統。解決方案是將管理外殼程序定義為系統中的默認外殼程序,并且更改用戶帳戶的注冊表項以指向輔助外殼程序。
?
?
?
?
轉載于:https://www.cnblogs.com/huhu0013/archive/2012/05/18/2507600.html
總結
以上是生活随笔為你收集整理的XP Embedded:不同的用户使用不同的外壳程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA代码规范
- 下一篇: VM虚拟机完美运行macos