最近在 Hyper-V 下使用虚拟机制作了一份通用类型的 Windows XP 系统映像,使用 Imagex 将其打包为 WIM 格式。除了方便自己使用外,也在 MDT2010 Beta 上进行部署测试。硬件兼容性和 HAL 的问题从目前的测试来看还是很正常的,不过还是需要大范围的部署在不通类型的 PC 上才能测试出是否可靠!但是当前所遇到的一个已知问题就是部署后的 Windows XP 其 Remote Desktop 服务无法正常工作,导致远程访问失败!具体表现如下图所示:

rdp_error1

        出现这个故障的原因是我在封装前使用 devcon 命令删除了所有的硬件,这就导致那些以虚拟硬件方式存在的服务也一并被删除。查阅了相关的资讯,创建了所需的注册表相关键值信息,在导入时提示访问注册表出错,经查是注册表相关项的安全权限限制了当前帐户的访问,如下图所示!

rdp_error2

        要解决上面提到的问题就需要重新配置安全权限并导入之前已经创建好的注册表文件,手工操作很简单,但是考虑到映像本身的问题,涉及到今后部署需要反复的手工操作确实非常麻烦,所以我需要依靠系统自带的命令以批处理方式来解决!从而实现自动修复的目标!这里需要涉及到两个系统命令,一个是“regini.exe”,用于修改注册表内容和权限的工具;另一个是“reg.exe”,控制台下的注册表实用工具,与“regedit 和 regedt32”类似,用于注册表的导入和导出。

        首先,我创建一个 rdpdr_reg.txt 的文件,内容如下:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\RDPDR [1 8 17]

        这个文件用于指定要修改的注册表项的具体位置和所分配的对应权限,其中 1 表示 Administrators 有完全控制权限,8 表示 Everyone 有读取权限,17 表示 SYSTEM 有完全控制权限。执行命令行”regini rdpdr_reg.txt“ 进行修改。另外,根据微软官方的 KB 进行操作,发现如果不事先创建好该配置文件而直接输入命令加地址和权限配置并不能生效,很奇怪!

        之后,创建一个 fixrdp.reg 的注册表文件,内容如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\RDPDR\0000]
"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"
"Class"="System"
"HardwareID"=hex(7):52,00,4f,00,4f,00,54,00,5c,00,52,00,44,00,50,00,44,00,52,\00,00,00,00,00
"Driver"="{4D36E97D-E325-11CE-BFC1-08002BE10318}\\0030"
"Mfg"="(标准系统设备)"
"Service"="rdpdr"
"DeviceDesc"="终端服务器设备重定向器"
"ConfigFlags"=dword:00000000
"Capabilities"=dword:00000000

        使用 命令行“reg import fixrdp.reg”进行导入。

rdp_fix

        最后根据实际的需要手工执行或编写成批处理文件加入到系统映像中即可。通过上述操作后,重新启动计算机故障得以解决!因为 Blog 显示代码有问题,所以特别将涉及到的配置文件上传到 Blog 供大家下载使用。下载地址:http://goxia.maytide.net/upfiles/fixrdp.zip

Tags: , , ,
Windows Client | 评论(0) | 引用(0) | 阅读(4070)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我