摘要:

能够使应用程序成为外壳程序是 Windows XP Embedded 的关键功能之一。设备可以在自定义外壳程序而不是 Explorer 外壳程序中启动,这提供了两个好处。第一个好处是系统能够更快地启动。Explorer 外壳程序需要花费大量的时间来加载所有支持库和文件,而特定应用程序很可能需要加载较少的库。第二个好处是可以限制对设备的管理功能的访问,这完全取决于自定义外壳程序应用程序的编写方式。

限制用户对管理功能(例如,控制面板)的访问可能是好处,但存在一个小的缺点:管理员也会受到限制,除非管理员可以在不同的外壳程序中启动。

理想的解决方案是对 Windows XP Embedded 进行相应的设置,以便用户帐户可以在应用程序外壳程序中启动,而管理员帐户可以在管理外壳程序中启动。然后,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 所示。

shellsfig01

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:不同的用户使用不同的外壳程序相关推荐

  1. Windows xp Embedded常见问题(转贴一)

    1.为什么我做的XPE找不到网上邻居的属性,所以导致无法设置IP地址?原因一:缺少Wireless Zero Configuration组件 原因二:没有正确的安装网卡驱动程序 2.如何让XPE实现自 ...

  2. Windows XP Embedded 上手指南

    https://blog.csdn.net/linux_ce/article/details/2049905 概述 对于一种开发工具的学习,最重要也最困难的阶段就是概念的建立,只要建立了正确的概念,明 ...

  3. 辨别 Windows CE, Windows XP Embedded 和 Windows Mobile

    很多人都没有接触过各种智能设备,现在市面的智能设备"千奇百怪",如何辨别它们? 回想起我自己真是惭愧,做了一年多的 Windows Mobile 开发后,我才知道 Windows ...

  4. lzg_ad:使用Virtual PC 部署和测试XP Embedded 发布镜像

    注意: 本文将假设你已经熟悉并会使用Virtual PC. 如果对Visual PC的使用方法还不了解,请参考: http://www.petri.co.il/virtual_create_virtu ...

  5. 带电插拔损坏设备原理_Win10拔U盘不用再点“安全弹出”了,XP和Win7老用户都眼馋了...

    用过U盘的人都知道,当我们拔出U盘时,需要手动点击"删除USB硬件"以保证U盘结束运行,如强行拔出,轻则损坏数据,重则U盘报废,但其实很多人都不记得就直接拔了. 不过最近微软传出好 ...

  6. Windows XP Embedded with Service Pack 2 开发包光盘 3CD

    简介 Microsoft Windows XP 是继 Windows 2000 和 Windows Millennium Edition 后推出的又一个 Windows 版本.Windows XP 通 ...

  7. Windows XP Embedded (XPE)开发工具、升级包、中文包等微软官方下载地址

    1.Windows XP Embedded SP2 英文版: http://download.microsoft.com/download/9/1/C/91C0118B-C683-47C4-9E84- ...

  8. 通过 Windows XP Embedded 设备更新代理应用 QFE

    学习如何将组件快速修复工程更新 (QFE) 应用于运行 Windows XP Embedded Service Pack 1 的已部署设备.本文包含有关使用通过各个系统级别定义 (SLD) 组件 QF ...

  9. 计算机用户组 xp,xp系统计算机管理本地用户和组不见了的方法

    今天和大家分享一下xp系统计算机管理本地用户和组不见了问题的解决方法,在使用xp系统的过程中经常不知道如何去解决xp系统计算机管理本地用户和组不见了的问题,有什么好的办法去解决xp系统计算机管理本地用 ...

最新文章

  1. 操作系统内存管理-Linux版
  2. 软件设计是怎样炼成的(6)——打造系统的底蕴(数据库设计)(上篇)
  3. 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(61)-如何使用框架来开发?...
  4. 设计模式1实践-开篇
  5. 数据中台(二)数据质量分析及提升
  6. MySQL主从复制(Centos6.3MySQL5.6)
  7. 【Java面试题】34 List 、Map、Set 区别?
  8. session实现购物车
  9. 深度剖析数据库国产化迁移之路
  10. 强大的漏洞扫描工具--nessus
  11. Spring-Cloud-Config消息总线和高可用
  12. 聚奎中学2021高考成绩查询,江津2017全体高考考生的喜报
  13. html ios视频播放器,iOS 视频播放器(整理)
  14. Python 撞库与防御策略
  15. 研发管理学习笔记1-研发管理的目标是什么
  16. Ubuntu20.04 向日葵无法被远控的解决办法
  17. python中输入直角三角形的两个直角边a,b求斜边c的长度
  18. ros2 for 思岚AI雷达
  19. 基于脉振高频电流注入的永磁同步电机无感FOC
  20. ansys_lsdyna输出.k文件lsprepost输出部件加速度

热门文章

  1. 棋盘切割 DP POJ 1191
  2. 无法打开用户默认数据库,登录失败,用户‘sa’登录失败,错误:4064的解决方法...
  3. linux 文件拆分 合并,Linux下文件的切分与合并的简单方法
  4. jquery ajax 解决跨域访问问题
  5. 分享一个有趣的网站“让我帮你百度一下“
  6. Android板实现双屏显示,DisplayManager和Display的使用
  7. web项目Servlet配置及jsp访问Servlet
  8. textview点击展开全部或收起,内容过长显示省略号,设置行间距,字间距,跑马灯显示
  9. Spark 连接 HBase 入库及查询操作
  10. php分页排序不变化,php – 计算已排序分页的给定记录的跳过值