ActiveX控件打包、簽名、嵌入詳解


前言

在我們的一個項目中,使用到了大華網絡監控攝像頭槍機,網絡上下載了其ActiveX插件,但是發現其所提供的類庫沒有打包處理。這就導致我們每次給用戶安裝的時候,均需要手動注冊一下。比較要命的是,一旦用戶電腦上的攝像頭黑屏或者不能用的時候,我們都需要遠程指導用戶怎么操作,相當麻煩。所以,遂決定將這些類庫打包一下,以便實現自動無值守安裝。

這里先將工具列舉一下:

iexpress.exe  用於CAB打包

signtool.exe  用於附加數字簽名

makecab.exe 用於CAB打包

http://www.ca365.com 用於申請免費數字證書

下面讓我們開始進行制作。

第一步,准備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]  
RealPlayX.ocx=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%\dahua\RealPlayX.ocx  
  
[DestinationDirs]  
files=11, dahua  
  
[files]  
RealPlayX.ocx=RealPlayX.ocx
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
     
 
[RealPlayX.ocx]
file-win32-x86=thiscab
clsid={30209FBC-57EB-4F87-BF3E-740E3D8019D2}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes

[Strings]  
DiskName = "dahua"  

 

最開始一般是[Version]區,這里不用管,保持默認內容就行。

然后是[DefaultInstall]區,表明文件拷貝的地方,我們這里為[files]區下的所有文件,並將[RegisterFiles ]區下的文件進行注冊。

然后是[RegisterFiles]區,表明注冊System32\dahua文件夾下的RealPlayX.ocx

然后是[DestinationDirs]區,11表明放到  Windows\System或者\WinNT\System32下,dahua則是創建的子級文件夾。

最后是[RealPlayX.ocx]區,第一個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,按照下面的順序來一一進行:

QQ截圖20140227135052-1

QQ截圖20140227135112-2

QQ截圖20140227135154-3

QQ截圖20140227135218-4

QQ截圖20140227135227-5

QQ截圖20140227135250-6

注意:在進行第五步的時候,請注意文件夾里面一定要放置makecab.exe,否則會導致生成不成功。

所有步驟進行完成后,會得到一個dahua.cab包。

 

第三步,對CAB包進行簽名。

首先,我們需要申請一個數字簽名證書。

打開http://www.ca365.com/網站,點擊免費證書下的“用表格申請證書”選項,這時會彈出“申請免費證書“頁面。其中,“識別信息”可以隨意填寫,“證書用途”要選擇“代碼簽名證書”,“加密服務提供”是用微軟提供的“Microsoft Strong Cryptographic Provider”,其他默認,點“提交”即可。最后點擊”下載證書“就可以把生成的”大華網絡監控.cer”下載到自己的電腦中。

然后,我們需要將數字簽名證書導入到IE中。

打開IE瀏覽器,打開菜單,點選”工具“按鈕,彈出下拉菜單,選擇”Internet選項“,切換到”內容“選項卡,點擊”證書“按鈕,點擊”導入“按鈕,導入剛剛生成的數字簽名證書。導入成功后,我們就可以看到相關證書信息了。

QQ截圖20140227140147-7

之后,打開signtool.exe,在命令行窗口下輸入signtool.exe  signwizard來啟動可視化安裝界面。按照如下圖示一步一步進行:

QQ截圖20140227140401-8

 QQ截圖20140227140454-9

QQ截圖20140227140502-10

QQ截圖20140227140526-11

QQ截圖20140227140605-12

QQ截圖20140227140613-13

QQ截圖20140227140622-14

注意,其中一步需要填寫”給數據蓋時間戳“,我們將”將時間戳添加到數據中“ 選中,然后在時間戳服務URL欄寫入:

http://timestamp.verisign.com/scripts/timstamp.dll

做完這一步,我們就可以得到一個完整的數字簽名包。

 

第四步:嵌入到網頁中使用。

打開網頁,在需要嵌入的地方寫入如下代碼:

   1:  <object id="AV_RealPlayX" style="width:100%; height:100%;" 
   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控件“設為”啟用“即可。

然后點擊”站點“按鈕,將”http://localhost“添加到可信列表,並去掉勾選”對該區域的所有站點要求服務器驗證(https:)“。

最后重啟瀏覽器。

 

第六步:設置完畢,運行。

設置完畢后,打開瀏覽器,輸入網址,運行:

首先,我們可以成功看到視頻效果:

QQ截圖20140227142205-15

然后打開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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM