我试图通过创建activeX控件在IE中嵌入一些应用程序。我有xyz.dll。通常,如果我通过命令提示符(批处理文件)注册此dll,则嵌入成功。但是,如果我使用cab文件方法,只有IE中的应用程序加载的第一个快照(嵌入式应用程序无法运行),尽管dll的注册正在发生。 xyz.cab文件包含xyz.dll和xyz.inf。 xyz.inf如下:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
xyz.dll=xyz.dll
[Deployment]
InstallScope=user|machine
[xyz.dll]
file-win32-x86=thiscab
clsid={HJI9D4D39-K9F5-489B-8032-CCHB1B189J10}
FileVersion=1,0,0,0
RegisterServer=yes
RedirectToHKCU=yes
HRESULT IEInstallScope(LPDWORD pwdScope);
我通过makecab.exe制作cab文件,并使用signtool.exe和makecert技术即时签署cab文件,最后摘录自html如下:
...
CLASSID="clsid:HJI9D4D39-K9F5-489B-8032-CCHB1B189J10"
CODEBASE="C:\xyz\13\plugins\ie\xyz.cab#Version="1,0,0,0"
...
所以我不知道为什么我面临这个问题。原因可能是因为他们错误地在inf文件中或我不知道"HRESULT IEInstallScope(LPDWORD pwdScope); "
的确切用法或是否与dll相关联?
请帮帮我!!!!!!
编辑 :::这对我有用,但我仍然不知道为什么registererver = yes无法完美地嵌入activex :: 新的inf文件如下:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
xyz.dll=xyz.dll
[Deployment]
InstallScope=user|machine
[Setup Hooks]
xcxc=xcxc
xcxc1=xcxc1
[xyz.dll]
file-win32-x86=thiscab
clsid={HJI9D4D39-K9F5-489B-8032-CCHB1B189J10}
FileVersion=13,0,0,0
RegisterServer=yes
RedirectToHKCU=yes
HRESULT IEInstallScope(LPDWORD pwdScope);
[regDll]
hook=xcxc
[xcxc]
run=C:\Windows\System32\regsvr32.exe "C:\xyz\13\plugins\ie\xyz.dll"
[abcDll]
hook=xcxc1
[xcxc1]
run=C:\Windows\syswow64\regsvr32.exe /u /s "C:\xyz\13\plugins\ie\xyz.dll"