解决 Win7 PE 微软限制大全(2010-02-21 13:05:08)转载
标签:win7pe限制老四yulon 分类:电脑技术
序:
Win7悄然落地,PE3.0时代悄悄降临,由南狮王的世界上首款的Win7内核PE起,如今已有许多大大研究PE3.0。但,现在比较成功的PE,一般都是由BSEplorer作shell的PE,原因不是嫌麻烦,因为随着Bart’s PE的出现,微软意识到前所未有的危机,随着1.0、1.5、2.0、2.1等PE,微软不断改进了PE中的功能禁用,此禁用包括Explorer、个性化等诸如一些的重要功能,也就大大增加了制作PE的困难。在本文中,我会教大家完美的解决众所周知的各种问题。
正文:
一、同一窗口打开文件夹 (By Yulon)
这是个困扰已久的问题,其实解决方法很简单,只需向 X:\Program Files\Internet Explorer 文件夹添加 ieproxy.dll 就可以了。而我知道这个方法也是很机缘巧合的,详见我在远景发的帖子bbs.pcbeta/thread-570918-1-1.html
二、搜索功能 (By Yamingw)
Explorer启动时会装载srchadmin.dll在内存中建立索引,响应组策略.当ExplorerFrame一接收到搜索键盘输入,首先查询用户接口语言PreferUILanguge(zh-CN),根据相应的键值在HEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex中查分词器(chsbrkr.dll,NOISE.CHS),由SearchFolder.dll负责定义范围,最后调用StructureQuery.dll进行结构化查询.当然这中间少不了一大堆的CLSID和相应的文件,比如Query.dll,tquery.dll等.这个搜索功能的子集并不需要正常win7中那么多的Windows Search 组件,甚至不需要Software\Microsoft\Windows Search这个键值,缺点是不能在开始菜单中查.
三、Windows服务 (By Yamingw)
为了方便管理,Windows 把服务分成很多组,每一组由一个管理.Svchost启动时读取注册表HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Svchost中的服务配置,此后启动服务时直接从内存中取得配置参数.所以要想启用所有服务就得先手动把相应服务的配置导入注册表.Windows 缺省情况下给服务的权限只有三种,WinpeShl 通过 LsaAddRights( ) 给服务更多的权限,要不然很多服务启动不了.服务除了自身的权限,还可以从Users"继承"过来权限,比如增加工作集.AudioSrv 比较特殊,正常系统System登陆模式是可以启动的,但在win7pe中即使赋予了权限,却仍然报错权限不够.暂时还不知道原因.
四、程序中的附件 (By 玄天)
可别小看这些小程序,它们从一个侧面代表了Win7pe的复杂性,要想在win7pe中使用它们,你会发现并不容易,已经不是拷贝两三个文件所能解决的.比如图片查看器不但需要Windows图像组件的4个文件photometadatahandler.dll,windowscodecs.dll,windowscodecsext.dll,wmphoto.dll;而且还需要windows颜组件mscms.dll,icm32.dll,以及spool文件夹下的配文件。
这是为了和打印出的图像一致,所见即所得嘛。再说画图,UIRibbon.dll,UIRibbonRes.dll是界面需要必不可少,而如果注册表中有静止图像服务,你就得有wiaservc.dll文件。windows中等待服务的时间可是两分钟啊。所以说,要想要功能,加文件增体积,没错!另外,截图工具和邮件程序更是不像话。截图工具在正常系统的System模式下也不能启动,已经不是文件和注册表的问题了。邮件程序在正常系统中也扭扭捏捏不肯出来,更别提在pe中了。
五、用户个性化 (By Yamingw)
win7各版本使用相同的文件,用户激活哪个授权就是那个版本,这就是微软的软件限制策略。不但是更换墙纸功能,win7的很多特性都需要验证版本属性。先看themecpl.dll中的一段程序:
//被CThemeCplCore::InitializePage(CThemeCplPage *)和CColorCplPage::LayoutInitialized(void)调用
BOOL IsPersonalizationFeatureAvailable()
{
BOOL retV = FALSE;
DWORD dwEnable,dwData;
if ( S_OK == SLGetWindowsInformationDWORD(L"Personalization-Enabled", &dwEnable) )
{
if ( dwEnable )
{
win7声卡驱动if ( !IsOS(OS_ANYSERVER) || SHRegGetBOOLW(HKEY_LOCAL_MACHINE, L"Software\Microsoft\Windows\CurrentVersion\Personalization", L"AllowPersonalization", &dwData) >= 0 && dwData )
retV = TRUE;
}
}
return retV;
}
而SLGetWindowsInformationXX()系列API访问的都是这个键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions
所以嘛,应该怎么办大家已经知道了。
要在win7pe中启用主题相对xppe来说已经纯粹是体力活了。补齐文件,补齐注册表,补齐各种服务,最后别忘了把你的DEFAULT拷到Users\Default下改名NTUSER.DAT,然后切换用户到Administrator。
不是我不想说详细点,而是东西多,忙过了还让人觉得得不偿失。
六、驱动安装 (By Yamingw)
先说如何提取自己的驱动。当自动安装成功驱动后,系统会在System32\DriverStore\FileRepositorycatroot生成备份,比如NV的显卡名字会是nv_disp.inf加一串数字G
UID。把此文件夹和System32\DriverStore下的几个文件拷到pe中相应的地方,因为infstrng.dat等文件记录了驱动的信息,安装时是以此为依据来文件夹的。驱动安装时需要验证数字签名,System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}下也得有相应的cat文件。nt5.cat记录的是windows本身的文件,pe中的文件记录不全。若要安装显卡驱动,DX的文件必不可少,缺省情况下窗口管理器也需要DX10.1的文件。当然像dispci.dll,montr_ci.dll这类设备类别安装器,System32\Drivers下相应的DX文件也必不可少。注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\class以及HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中关于DX的项最好也补全。系统
即插即用组件可千万不要少啊。声卡驱动还需要Windows Media Foundition 等组件,不过装上了也没声音,现阶段恐怕是不好办。