背景:我用vc做了一个ocx控件,然后自己写了inf文件,最后将ocx文件、相关dll文件、inf文件打成了cab包,最后进行了签名。测试环境:Windows XP (SP2),Windows 2000 (SP4),IE 6.0(两者IE版本是一摸一样的)测试结果:XP和2000系统都能正确安装证书。XP下面IE能正确下载cab包,并自动将dll文件和ocx文件解压拷贝到system32目录下,并注册ocx控件。但是2000下面却只将cab下载到了IE临时目录,并没有将dll文件和ocx文件解压拷贝到system32目录下,更谈不上自动注册控件了。不知道是什么原因,请大家指点。谢谢!!附上我的inf文件,不知是不是inf文件问题。另外,我是用的cabarc打包、signcode签名。[VERSION]
signature="$CHICAGO$"
AdancedINF=2.0[Add.Code]
MTT.ocx=MTT.ocx
MSVCRT.dll=MSVCRT.dll
MSVCIRT.dll=MSVCIRT.dll
MSVCP60.dll=MSVCP60.dll
MTL302.dll=MTL302.dll[MSVCRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCIRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCP60.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=6,2,3104,0
RegisterServer=yes[MTL302.dll]
file-win32-x86=thiscab
DestDir=11
RegisterServer=yes[MTT.ocx]
file-win32-x86=thiscab
clsid={7958CD77-3E48-49DF-88CB-8242858BAAFF}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
signature="$CHICAGO$"
AdancedINF=2.0[Add.Code]
MTT.ocx=MTT.ocx
MSVCRT.dll=MSVCRT.dll
MSVCIRT.dll=MSVCIRT.dll
MSVCP60.dll=MSVCP60.dll
MTL302.dll=MTL302.dll[MSVCRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCIRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCP60.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=6,2,3104,0
RegisterServer=yes[MTL302.dll]
file-win32-x86=thiscab
DestDir=11
RegisterServer=yes[MTT.ocx]
file-win32-x86=thiscab
clsid={7958CD77-3E48-49DF-88CB-8242858BAAFF}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
另外,我一般是写一个程序,其中包括拷贝注册等功能,然后在包中只放置这个程序.
例如mfc42.dll, msvcrt.dll(这个你已经使用了), 如果直接都不能注册,可能就是这种情况.