1

我试图通过创建 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 文件中弄错了一些东西,或者我不知道 dll 的确切用法"HRESULT IEInstallScope(LPDWORD pwdScope); "或它是否与 dll 相关???? 请帮我!!!!!!

编辑::: 这对我有用,但我仍然不知道为什么 registerserver=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"
4

0 回答 0