|
本帖最后由 hhh333 于 2013-12-28 09:12 编辑
以下几点是明确的:
1、QQ的运行要求PE系统必须要有VC2005库;
2、库文件位于%Windir%\winsxs下,将文件恢复到这个位置并补齐注册信息就可以被使用,不需要额外的安装和DLL注册;
有几点是不明确的:
1、NT5与NT6的VC2005可不可以共用?
2、NT5中与NT6中安装VC2005有不用不同?
就这些问题进行了一些测试:
前面发布的PE,VC0508均是外置的,要用到时再解压装入,NT6中似乎正常,但NT5中不工作,QQ用不了,近期有空想将这个问题解决,经过摸索得出如下结论:
1、NT5中VC2005似乎根本不需要注册信息,将文件恢复到winsxs下即可;
在03中PE安装QQ,经监视写入了如下一些注册信息:
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations]
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD]
- "Identity"="Microsoft.VC80.ATL,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053""
- "PublicKeyToken"=hex:1f,c8,b3,b9,a1,e1,8e,3b
- "Catalog"=dword:00000001
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD\Files]
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD\Files\0]
- @="ATL80.dll"
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989]
- "Identity"="Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053""
- "PublicKeyToken"=hex:1f,c8,b3,b9,a1,e1,8e,3b
- "Catalog"=dword:00000001
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\Files]
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\Files\0]
- @="msvcr80.dll"
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\Files\1]
- @="msvcp80.dll"
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989\Files\2]
- @="msvcm80.dll"
- ............
复制代码
发现安装的是8.0.50727.4053
winsxs下增加了:x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_E6967989
x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_B77CEC8E
x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_0CCC058C
四个目录及其文件,MANIFESTS中增加了相应的.CAT和.manifest文件。
虽然QQ2013SP6最后安装成功失败了,但去除文件完整校验的精简版已经可以工作了。
注册信息一改再改,后干脆不要了,只恢复文件,QQ照样可以工作!
2、NT5与NT6的VC并不能共用
NT6中VC2005是需要注册信息的,注册信息不对不能工作。注册信息位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners下
winbuilder中集成的vc05文件夹如下:
x86_microsoft.vc80.atl_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d1cb102c435421de
x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a
x86_microsoft.vc80.mfc_1fc8b3b9a1e18e3b_8.0.50727.6195_none_cbf5e994470a1a8f
x86_microsoft.vc80.mfcloc_1fc8b3b9a1e18e3b_8.0.50727.6195_none_03ce2c72205943d3
将这个放03PE中,QQ不能工作,曾经尝试将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations中的注册信息改成6195的也不行。如将
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD\Files\0]
@="ATL80.dll"
改为
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d1cb102c435421de
\Files\0]
@="ATL80.dll"
好象人家根本不读这个值,直接去找的,因此失败了。不知道将NT6的注册信息改成
x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_473666FD这种形式行不行,因为不知道QQ调用VC05的时候是什么策略。也不知道版本号后面的数字有不有讲究,如x-ww_473666FD、none_d1cb102c435421de等。
另外通过查找系统注册表,好象有
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners\x86_microsoft.vc80.atl_1fc8b3b9a1e18e3b_none_bcab4e08946f6004\8.0]
- @="8.0.50727.4053"
- "8.0.50727.4053"=hex:01
- "8.0.50727.1833"=hex:01
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_none_bcc8f3fc9457ed28\8.0]
- @="8.0.50727.6910"
- [color=Red]"8.0.50727.6910"=hex:01
- "8.0.50727.4053"=hex:01
- "8.0.50727.42"=hex:01
- "8.0.50727.762"=hex:01
- "8.0.50727.4027"=hex:01
- "8.0.50727.1833"=hex:01[/color]
复制代码
通过让注册表中多注册一些版本号,但仍然使用一个版本的文件,不知道可不可以?期待高手进一步探讨!
总之,通过一个晚上的测试,终于明确了一些问题,同时解决了一直以来NT5中不能用QQ2013的问题。
|
评分
-
查看全部评分
|