XP Embedded:不同的用户使用不同的外壳程序

 

摘要:

能够使应用程序成为外壳程序是 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统中 库分为静态库和,Linux系统中“动态库”和“静态库”那点事儿-【经典好文】...

今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在这之前&#xff0c;我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情。在linux操作系统中&#xff0c;普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式。ELF(Exec…

linux上的壁纸软件下载,Ubuntu 17.10上安装开源壁纸工具Wallch 4.0

在Ubuntu 17.04上安装WallchWallch是一款免费的开源通用壁纸更换器&#xff0c;用户可以在设置的时间更改桌面背景图片。它会在桌面上更改并显示随机图片或维基百科的当天图片。它还具有一个实时地球Living Earth壁纸&#xff0c;每30分钟更换桌面背景&#xff0c;以显示阳光和…

linux find显示文件的基本信息,命令find搜索文件,命令stat查看文件的详细信息

命令stat命令语法stat(选项)(参数)命令描述命令stat用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。命令选项-L&#xff1a;支持符号连接&#xff1b;-f&#xff1a;显示文件系统状态而非文件状态&#xff1b;-t&#xff1a;以简洁方式输出信息&#…

Linux rpm 命令参数使用详解[介绍和应用]

RPM是RedHat Package Manager&#xff08;RedHat软件包管理工具&#xff09;类似Windows里面的“添加/删除程序” rpm 执行安装包 二进制包&#xff08;Binary&#xff09;以及源代码包&#xff08;Source&#xff09;两种。二进制包可以直接安装在计算机中&#xff0c;而源代…

Ubuntu10.10的网络配置

有一阵子着实对Ubuntu的网络配置很迷惑&#xff0c;耐下心来仔细上网找了找&#xff0c;有点小心得&#xff0c;总结一下。 先说下大概的配置过程&#xff0c;再去细究一些情况。 一、配置大概分三类&#xff1a;通过配置文件配置、通过命令配置、通过图形化的网络连接菜单配置…

DllMain详解

1 DLL的进入/退出函数 1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样&#xff0c;DLL也有一个入口函数&#xff0c;就是DllMain。以“DllMain”为关键字&#xff0c;来看看MSDN帮助文档怎么介绍这个函数的。 The DllMain function is an optional method of entr…

linux安装tensorflow教程,真正从零开始,TensorFlow详细安装入门图文教程!

在正式开始之前我想说&#xff1a;一定要注意窗口给出的提示(英文)。在实际操作中可能会碰到各种各样的问题&#xff0c;但常见的问题其实都可以根据它的报错信息找到原因&#xff0c;只要上网搜一搜相应的信息就能解决&#xff0c;甚至它自己就会给出解决的建议。如果你发现你…

引路蜂地图API:Gis.Navigation包定义

本包提供了路口到路口实时导航API&#xff0c;从地图服务器返回的路径信息含有文字和路径的地理坐标信息&#xff0c;类NavigationEngine根据路径和当前坐标实现实时导航。它内部含用三个工作线程&#xff1a; Location Monitor 实时监视当前位置坐标是否偏离路径&#xff0c;如…

有些垃圾网站转载都不会

有时会看到我的文章被转载&#xff0c;只要保留作者信息和原文链接&#xff0c;并且忠实于原文都是很欢迎的。这里的忠实原文应该是最基本的了吧&#xff0c;转载嘛&#xff0c;最简单的也就是拷贝粘贴吧&#xff0c;可发现有些垃圾网站&#xff0c;连拷贝粘贴都做不好&#xf…

Linux部署动态网页,linux构建动态WEB服务器安装篇

linux构建动态WEB服务器安装篇发布时间&#xff1a;2008-09-18 08:50:01 作者&#xff1a;佚名 我要评论基本配置安装web服务器:httpd-2.X.X先优化吧根据CPU设置变量#export CFLAGS”-O2 -marchpentium4 -pipe” && CXXFLAGS$CFLAGS“-march”选项表示为特定的cpu…

sip事务与对话

一个事务通常由一个请求开始&#xff0c;由一个响应码&#xff08;a response code&#xff09;结束。VIA头域中的branch参数用来标识一个事务。 对话可以是开始于一个INVITE事务&#xff0c;结束于一个BYE事务。一个对话由FROM&#xff0c;TO和CALL&#xff0d;ID头域的结合所…

px、dp和sp,这些单位有什么区别?

相信每个Android新手都会遇到这个问题&#xff0c;希望这篇帖子能让你不再纠结。 px&#xff1a; 即像素&#xff0c;1px代表屏幕上一个物理的像素点&#xff1b; px单位不被建议使用&#xff0c;因为同样100px的图片&#xff0c;在不同手机上显示的实际大小可能不同&#x…

linux 例行性工作,Linux例行性工作

Linux例行性工作Linux:例行性工作什么是例行性工作&#xff1f;其实对于例行性工作而言就是在当前环境下周期性进行的必须工作。在Linux下&#xff0c;有2种例行性工作种类&#xff1a;一种是突发性&#xff0c;做完以后就没有的那种at:at是个可以处理仅执行一次就结束调度的命…

linux 下搭建yolov3错误,Ubuntu20.04+cuda11.1+yolo3 目标检测 深度学习系统 真正从0搭建 包含各类可能遇到的错误...

本篇文章包含内容较多&#xff0c;请参照目录浏览,在每一部分结束或,有该部分可能遇到的问题0、开始本教程前请先备份电脑中的重要文件&#xff01;&#xff01;&#xff01;&#xff01;一、Ubuntu20.04 搭建更详细的内容请参照该博客&#xff1a;https://www.cnblogs.com/mas…

SystemVerilog例子---traffic light

SystemVerilog例子---traffic light module traffic_light(output logic green_light,yellow_light,red_light,input sensor,input [15:0] green_downcnt,input [15:0] yellow_downcnt,input clock,input resetN); parameter R_BIT 0,G_BIT 1,Y_BIT 2;enum logic [2:0] {RE…

报表中的Excel操作之Aspose.Cells(Excel模板)

本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。这个组件的强大之处&#xff0c;就不多说&#xff0c;对于我们的报表总是会有导出Excel的处理&#xff0c;如果你使用微软Excel的com组件&#xff0c;那么对于简单的操作还行&#xff0c;但是多余复杂的模板&#xff0…

在飞音G801上运行OpenWRT+Asterisk

上篇文章介绍了如何在华硕RT-N11建立小型的SIP Server&#xff0c;本篇文章介绍将Asterisk移植到更为强大的VOIP网关G801上。G801是北京飞音时代的无线VoIP网关产品&#xff0c;在韩国SKT等运营商中广泛采用。G801支持802.11n 2T2R的无线路由&#xff0c;1WAN 4LAN的以太网&am…

android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。

Encrypt(加密工具)字符串&#xff0c;byte[]&#xff0c;文件等对象的加密和解密工具集合&#xff0c;包含了多种加密方案。加密类型摘要相关方法简单加密换一种编码格式Base64Util单向加密只能加密&#xff0c;不能解密MD5Util、SHAUtil对称加密使用相同的秘钥加密和解密AESUt…

开源应用架构之asterisk

作者&#xff1a;Russell Bryant 翻译&#xff1a;jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说&#xff0c;Asterisk是一个服务器应用&#xff0c;能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spen…

android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

Android5.1 壁纸设置流程浅析Ubuntu14.04 Android5.1 Source Insight3这里只是简单分析一下5.1里是如何设置壁纸的&#xff1b;这个流程和4.4有一些不同。但基本都是找个地方存放壁纸文件&#xff0c;需要的时候读取&#xff0c;设置的时候更新这里只看设置的过程。权当参考。…