• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            使用INF和OSD文件從Internet下載組件

             

            作為系統服務,IE下載從internet組件通常需要進行認證和檢查。對于發布者,有兩種機制:

            1、inf文件進行發布

            2、osd文件發布(ie4及以后版本)

             

            推薦使用cab來將所有需要文件打包,并進行簽名。IE收到一個cab文件后:

            首先查找是否存在OSD文件,如果存在,按照OSD語法(XML文檔)進行處理。其中如果涉及到INF文件,還會打開INF文件進行引用。

            如果不存在,會打開INF文件,按照INF文件進行解釋安裝。

             

            CODEBASE       屬性

            internet上發布組件,極其重要的屬性就是codebase屬性了,因為此url指定了一個“挑剔”的組件運行所需的全部文件從哪兒獲取。

            組件開發者可以將組件以下列方式打包發布:

                   PE格式(.exe .ocx .dll ……),好處是文件就一個一布操作,但是文件不會被壓縮,通過http方式下載。

                   inf文件。此方式僅在瀏覽器安全設定為低、中時候才可行,原因在于單一inf文件不可被簽名。Inf的語法可以指向一些多樣性的可執行文件。

                   cab文件。所有需要的文件打包到一個壓縮文件中,可被簽名。

             

            INF文件格式

            INF語法由Internet下載組件下載并處理。

            所有URL必須被urlencode過,即空格以%20代替,且以codebase=<URL>中的url來作為基址解釋。

            代碼下載器理解其中幾個主要的節

            [Add.Code] [Setup Hooks]

            如果者兩個節均不存在,那么當作標準的win32 inf格式進行解釋

             

             Add.Code 節列出所有將要被安裝的文件,包括可選文件

            [Add.Code]

            filename1=section-name1

            filename2=section-name2

             

            每一個文件自成一節(文件節),并進行單獨描述安裝屬性。

            [section-name1]

            key1=value1

            key2=value2

             

            在一個文件節中,以下關鍵字可用:

            File-%opersys%-%cpu%=[url | ignore | thiscab]

            %opersys% 可以是 [win32 | mac] ,當前 %cpu% 可以是 [x86 | ppc | mips | alpha].

             

            File=[url | thiscab]

            指示文件可以在那些地方下載得到。如果沒有設定值且文件沒有載用戶的計算機上,下載失敗。

            FileVersion=a,b,c,d

            文件版本定義

            Clsid={nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}

            組件的CLSID

            DestDir=[10 | 11]

            DestDir 可以設定為 10 \windows directory

            11      windows\system directory.

            如果沒有設定值,則存放在cache目錄中

            RegisterServer=[yes | no]

            是否自行注冊組件,會覆蓋inf文件中的其他關于注冊的設定

            Hook=section-name3

            定義有條件掛鉤。如果 clsid 或者文件的最小版本不匹配且無 File= or File-%opersys%-%cpu%= values 條目,安裝程序會尋找關于定制的掛鉤。掛鉤節如下定義: [section-name3]

            key1=value1

            key2=value2

             

            可以多個組件都掛同一個hook.

            以下key可用:

            File-%opersys%-%cpu%=[url | ignore]

            File=[url]

            Run=[cmd-line]

            cab文件展開在臨時文件夾后運行的名另。如果缺少此命令設定,將尋找 InfFile= and InfSection= keys 以運行掛鉤節。

            InfFile=[name of win32 INF file inside the CAB] 可以是在cab文件中的其他inf文件

            InfSection=[section name in the InfFile mentioned in above key]

             

            無條件安裝Hook[Setup Hooks]節中指定,且在add.Code節之前執行。

            [Setup Hooks]

            hookname1=section-name4

            hookname2=section-name5

             

            如果要使用Hook節,需要指定version如下(否則下載組件服務會忽略):

            [Version]

            Signature="$CHICAGO$"

            AdvancedINF=2.0

             

            ;例子分析最后給出。

             

            Internet 組件下載服務

            Internet 組件下載服務通過單一函數導出:CoGetClassObjectFromURL。此函數下載應用代碼,校驗且安裝OLE組件,由IE實現

            CoGetClassObjectFromURL 函數返回一個給定rclsid的工廠對象。如果無CLSID CLSID_NULL),此函數根據contentTypeMIME類型進行選擇。如果對象已經安裝,就實例化,否則,從指定的url處或者internet搜索頁下載必要的代碼

            "下載和安裝" 進程處理以下步驟:

            使用URL Moniker(s)下載必要的代碼。

            調用 WinVerifyTrust 以確信所有下載文件安裝是安全的

            所有自注冊組件完成注冊

            增加對下載的組件的跟蹤的注冊項

            利用rclsid調用 CoGetClassObject

            在通常瀏覽器設定下,直接通過HTML OBJECT 元素獲取必須的參數。舉例:對于一個 <OBJECT>標簽"CODEBASE=http://www.foo.com/bar.ocx#Version=a,b,c,d"szCodeURL "http://www.foo.com/bar.ocx", dwFileVersionMS MAKELONG(b, a), dwFileVersionLS MAKELONG(d, c).

             

            存儲/緩存下載的代碼

            下載的代碼存儲在windows\occache.。此位置可被注冊表的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ActiveXCache值所覆蓋。 有些組件安裝在\windows \windows\system.。所有轄載的代碼登記在一個新的 "Module Usage" 注冊節以保持對此代碼的跟蹤。下載的代碼不可被自動刪除但可被用戶通過控制面板的清除功能請除掉。

             

            Internet 搜索路徑

            Internet 組件下載調用下載代碼,它遍歷Internet搜索路徑尋找引用的組件。此處的路徑是對象對處服務器的列表,被GetClassObjectFromURL調用。 即使 <OBJECT> 標記沒有指定CODEBASE 下載 OLE 控件,Internet 組件下載服務將依然使用Internet 搜索路徑尋找必要的代碼。

             

            Internet 搜索路徑語法

            搜索路徑存儲在注冊表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\CodeBaseSearchPath. ,如下格式:

            CodeBaseSearchPath = <URL1>; <URL2>; ... <URLm>; CODEBASE; <URLm+1>;

                ... <URLn-1>; <URLn>

            每一個URL都是絕對路徑,依次搜索下載,按照CODEBASE指定的szCodeURL

             

             

             

            Win32 INF 語法中特定變量:

            EXTRACT_DIR

            CAB文件展開后的目錄

            run=%EXTRACT_DIR%/mysetup.exe

             

            OBJECT_DIR

            Windows下的Downloaded Program Files 目錄\windows directory. 

             一個 internet inf的例子。

            我們通過Terminal Services 服務來控制遠端計算機時除了可以通過遠程連接管理器外,還可以通過一個web中的activex控件進行發布,此控件信息在:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/termserv/embedding_the_remote_desktop_activex_control_in_a_web_page.asp

            此控件的internet發布inf文件如下,我們進行逐節分析:

             

            ; INF file for Terminal Server Web client       注釋;開頭

            [VERSION]        ;確定版本,否則下載服務不認可有關內容

            signature="$CHICAGO$"

            AdancedINF=2.0

             

            [Add.Code]                      ;安裝節 ,告訴我們此inf文件肯定還有一個稱作msrdp.ocx

            msrdp.ocx=msrdp.ocx           ;的節,此inf文件僅安裝一個組件

             

            [msrdp.ocx]                        add.code節指定的節

            file-win32-x86=thiscab        ;文件在當前cab文件中

            clsid={9059f30f-4eb1-4bd2-9fdc-36f43a218f4a}        ;組件的clsid

            FileVersion=5,1,2600,1094                                      ;文件版本

            RegisterServer=yes                                                        ;是否注冊組件,下在后注冊組件

             

            [Setup Hooks]                            ;無條件掛鉤      ,此節指定有多少無條件掛鉤,僅有一個

            AddToRegHook=AddToRegHook

             

            [AddToRegHook]                ;無條件掛鉤節

            InfFile=msrdp.inf                  ;從msrdp.inf中讀取信息

            InfSection=DefaultInstall       ;指定標準安裝文件

             

            [DefaultInstall]                     ;需要按照安裝文件解釋的節

            AddReg=AddIMERegEntries              ;尋找 AddIMERegEntries

             

            [AddIMERegEntries]            ;按照標準inf文件中的addreg類節來解釋此節內容

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","msime95.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","msime97.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","imejp98.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","imejp.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","imjp8.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\JPN","imjp81.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","msime95.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","msime95k.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","msuni95k.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","imekr.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","imekr98u.ime",,"null"

            HKLM,"SOFTWARE\Microsoft\Terminal Server Client\IME Mapping Table\KOR","imekr61.ime",,"null"

            posted on 2008-06-19 10:46 大龍 閱讀(1468) 評論(0)  編輯 收藏 引用

            日韩精品久久久久久| 国产精品久久久久免费a∨| 久久亚洲私人国产精品vA| 热re99久久精品国99热| 欧美久久综合性欧美| 精品久久久久中文字| 一本色道久久HEZYO无码| 久久91精品国产91久久麻豆| 亚洲精品视频久久久| 久久精品天天中文字幕人妻 | 青青草原综合久久大伊人导航 | 久久国产精品无码一区二区三区| 久久精品草草草| 国内精品久久久久影院亚洲| 丰满少妇人妻久久久久久| 久久天天躁狠狠躁夜夜不卡| 国产成人久久激情91| 日韩欧美亚洲综合久久| 亚洲欧美精品伊人久久| 亚洲国产精品无码久久| 波多野结衣久久| 久久影院亚洲一区| 国产福利电影一区二区三区久久久久成人精品综合 | 久久久久国产一区二区| 国产午夜精品久久久久免费视 | 久久www免费人成看片| 国产香蕉97碰碰久久人人| 久久w5ww成w人免费| 亚洲AV无码久久精品色欲| 亚洲美日韩Av中文字幕无码久久久妻妇| 久久99精品久久久久久hb无码 | 99久久精品无码一区二区毛片| 婷婷伊人久久大香线蕉AV| 亚洲欧洲精品成人久久奇米网| 久久AAAA片一区二区| 国产精品免费久久久久影院 | 久久66热人妻偷产精品9| 成人久久免费网站| 久久精品国产亚洲AV电影| 伊人久久大香线蕉综合Av| 无码专区久久综合久中文字幕|