ActiveX控件打包、签名、嵌⼊详解
舞蹈的蹈组词前⾔
在我们的⼀个项⽬中,使⽤到了⼤华⽹络监控摄像头机,⽹络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理。这就导致我们每次给⽤户安装的时候,均需要⼿动注册⼀下。⽐较要命的是,⼀旦⽤户电脑上的摄像头⿊屏或者不能⽤的时候,我们都需要远程指导⽤户怎么操作,相当⿇烦。所以,遂决定将这些类库打包⼀下,以便实现⾃动⽆值守安装。
这⾥先将⼯具列举⼀下:
< ⽤于CAB打包
< ⽤于附加数字签名
< ⽤于CAB打包
⽤于申请免费数字证书
下⾯让我们开始进⾏制作。
第⼀步,准备Inf配置⽂件。
⾸先,新建⼀个后缀名为 dahua.inf 的⽂件并打开,输⼊如下内容并保存:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[DefaultInstall]
CopyFiles=files
RegisterOCXs=RegisterFiles
[DefaultUninstall]
cleanup=1
Delfiles=files
UnRegisterOCXs=RegisterFiles
[SourceDisksNames]
1 = %DiskName%,"dahua.cab",1
[SourceDisksFiles]
<=1
dhnetsdk.dll=1
ssleay32.dll=1
MP3Decoder.dll=1
libeay32.dll=1
jpegdec.dll=1
IvsDrawer.dll=1
茶山是什么
dllmpeg4.dll=1
dllh264.dll=1
DllDeinterlace.dll=1
dhplay.dll=1
小贝壳海鲜自助火锅dhdvr.dll=1
DhDecode.dll=1
dhconfigsdk.dll=1
AmrDll.dll=1
AACDecoder.dll=1
[RegisterFiles]
%11%\
[DestinationDirs]
files=11, dahua
[files]
攻壳机动队电影百度云=贴车膜
dhnetsdk.dll=dhnetsdk.dll
ssleay32.dll=ssleay32.dll
MP3Decoder.dll=MP3Decoder.dll
libeay32.dll=libeay32.dll
jpegdec.dll=jpegdec.dll
IvsDrawer.dll=IvsDrawer.dll
dllmpeg4.dll=dllmpeg4.dll
dllh264.dll=dllh264.dll
DllDeinterlace.dll=DllDeinterlace.dll
dhplay.dll=dhplay.dll
dhdvr.dll=dhdvr.dll
DhDecode.dll=DhDecode.dll
dhconfigsdk.dll=dhconfigsdk.dll
AmrDll.dll=AmrDll.dll
AACDecoder.dll=AACDecoder.dll
[]
file-win32-x86=thiscab
clsid={30209FBC-57EB-4F87-BF3E-740E3D8019D2}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
[Strings]
DiskName = "dahua"
最开始⼀般是[Version]区,这⾥不⽤管,保持默认内容就⾏。IPHONE15或将全部搭载苹果自研芯片
然后是[DefaultInstall]区,表明⽂件拷贝的地⽅,我们这⾥为[files]区下的所有⽂件,并将[RegisterFiles ]区下的⽂件进⾏注册。
然后是[RegisterFiles]区,表明注册System32\dahua⽂件夹下的
然后是[DestinationDirs]区,11表明放到 Windows\System或者\WinNT\System32下,dahua则是创建的⼦级⽂件夹。
最后是[]区,第⼀个file值告诉ie到哪⾥去得到这个ocx,file⼀共包括三个部分,第⼀部
分是file,这个永远都是这样的;第⼆部分告诉声明⽀持的OS,win32表⽰windows,mac就是苹果MAC OX了;第三部分是CPU类型,⽐如说x86、mips等。file的值可以取三个:⼀个URL、ignore和thiscab,如果是URL则说明到URL所在的位置去下;如果是ignore说明对于这种OS和CPU,不需要下载这个⽂件;如果是thiscab就在当前的cab⽂件中了。第⼆部分是RegisterServer,可以取两个值yes和no,如果为yes则说明ie要注册该ocx,如果是no就不必了;接下来是clsid,需要填写该ocx的class guid。再下来是DestDir,它的值是ocx将要存到本地硬盘的位置,如果它的值是10,则将ocx放到\Windows或者\WinNT下;如果是11,则放到\Windows\System或者\WinNT\System32下;如果是空(就是没有值)则会放到\Windows或者\WinNT下的Downloaded Program Files⽬录下;最后是FileVersion,说明了ocx的版本号。
第⼆步,制作CAB包。
打开iexpress,按照下⾯的顺序来⼀⼀进⾏:
注意:在进⾏第五步的时候,请注意⽂件夹⾥⾯⼀定要放置,否则会导致⽣成不成功。
所有步骤进⾏完成后,会得到⼀个dahua.cab包。
第三步,对CAB包进⾏签名。
⾸先,我们需要申请⼀个数字签名证书。
打开⽹站,点击免费证书下的“⽤表格申请证书”选项,这时会弹出“申请免费证书“页⾯。其中,“识别信息”可以随意填写,“证书⽤途”要选
择“代码签名证书”,“加密服务提供”是⽤微软提供的“Microsoft Strong Cryptographic Provider”,其他默认,点“提交”即可。最后点击”下载证书“就可以把⽣成的”⼤华⽹络监控.cer”下载到⾃⼰的电脑中。
然后,我们需要将数字签名证书导⼊到IE中。
打开IE浏览器,打开菜单,点选”⼯具“按钮,弹出下拉菜单,选择”Internet选项“,切换到”内容“选项卡,点击”证书“按钮,点击”导⼊“按钮,导⼊刚刚⽣成的数字签名证书。导⼊成功后,我们就可以看到相关证书信息了。
之后,打开,在命令⾏窗⼝下输⼊ signwizard来启动可视化安装界⾯。按照如下图⽰⼀步⼀步进⾏:
注意,其中⼀步需要填写”给数据盖时间戳“,我们将”将时间戳添加到数据中“ 选中,然后在时间戳服务URL栏写⼊:
做完这⼀步,我们就可以得到⼀个完整的数字签名包。
第四步:嵌⼊到⽹页中使⽤。
打开⽹页,在需要嵌⼊的地⽅写⼊如下代码:
1: <object id="AV_RealPlayX"
2: classid="CLSID:30209FBC-57EB-4F87-BF3E-740E3D8019D2"
3: codebase="DaHua.CAB#version=1,0,0,1">
4: <param name="_Version"value="65536"/>
5: <param name="_ExtentX"value="22357"/>
6: <param name="_ExtentY"value="16589"/>
7: <param name="_StockProps"value="0"/>
8: </object>
其中param根据你的activex的控件的需要进⾏配置。尤其需要注意classid和codebase这两个属性,只要配置对了就⾏。
第五步:IE权限设置。
由于Activex只能运⾏在⽀持Activex的浏览器中,尤其是IE中,所以这⾥我们需要对IE浏览器进⾏下设置。
打开IE,点击”⼯具“菜单,点击”Internet选项“,在弹出的窗⼝中,选择”安全“标签,切换到”可信站点“,点击”⾃定义级别“,将”对标记为可安全执⾏脚本的ActiveX控件执⾏脚本“设为”启⽤“;将”对未标记为可安全执⾏脚本的ActiveX控件初始化并执⾏脚本“设为”启⽤“;将”下载未签名的ActiveX控件“设为”提⽰“;将”下载已签名的ActiveX控件“设为”启⽤“即可。
然后点击”站点“按钮,将”localhost“添加到可信列表,并去掉勾选”对该区域的所有站点要求服务器验证(https:)“。
最后重启浏览器。
第六步:设置完毕,运⾏。
设置完毕后,打开浏览器,输⼊⽹址,运⾏:
⾸先,我们可以成功看到视频效果:
然后打开System32⽂件夹,我们可以看到⼀个名称为dahua的⽂件夹被建⽴,并且所有的dll和ocx都被放⼊了进来。
好了,就是这些,希望对你有⽤。谢谢。
添加信任列表
最后需要说明,运⾏此Activex插件需要将当前⽹址添加到信任列表。请将如下的脚本保存为vbs⽂件,然后运⾏即可。
on Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set objReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\" _
& "ZoneMap\Ranges\Range1"
objReg.CreateKey HKEY_CURRENT_USER, strKeyPath
strValueName = "http"
dwValue = 2
strValueNameEx = ":Range"
dwValueEx="123.7.63.174"
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueNameEx, dwValueEx
objReg.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论