• <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)  編輯 收藏 引用

            国产毛片久久久久久国产毛片 | 成人久久免费网站| 香蕉久久夜色精品国产2020| 性做久久久久久久久| 久久国产色av免费看| 久久久久久久亚洲Av无码| 国产亚洲色婷婷久久99精品| 99久久无码一区人妻| 久久精品国产亚洲av麻豆蜜芽| 久久亚洲精品中文字幕| 久久久WWW成人| 久久丫精品国产亚洲av| 久久久久99精品成人片| 97久久精品无码一区二区| 人妻系列无码专区久久五月天| 久久久久久久免费视频| 欧美精品一本久久男人的天堂| 噜噜噜色噜噜噜久久| 久久精品国产亚洲AV无码麻豆| 久久精品国产99国产精品| 久久久久99精品成人片试看| 色婷婷噜噜久久国产精品12p| 久久精品国产只有精品2020| 中文精品99久久国产| 国产精品免费看久久久香蕉| 亚洲va久久久噜噜噜久久| 欧洲性大片xxxxx久久久| 国产精品热久久毛片| 91久久九九无码成人网站| 97精品国产91久久久久久| 亚洲色大成网站www久久九| 亚洲精品午夜国产va久久| 精品久久久久久无码国产| 亚洲午夜久久久精品影院| 99久久精品午夜一区二区| 久久久精品人妻一区二区三区四 | 麻豆国内精品久久久久久| 91久久精品无码一区二区毛片| 91精品国产综合久久久久久| 国内精品久久久久影院日本 | 国内精品久久久久影院优|