• <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 大龍 閱讀(1470) 評論(0)  編輯 收藏 引用

            97精品国产97久久久久久免费 | 久久精品一区二区三区AV| 亚洲国产小视频精品久久久三级| 噜噜噜色噜噜噜久久| 精品久久久久香蕉网| 久久久久久亚洲精品无码| 久久亚洲国产精品成人AV秋霞| 色综合久久天天综合| 免费精品国产日韩热久久| 久久精品无码一区二区无码 | 亚洲国产精品久久久久网站| 亚洲伊人久久综合中文成人网| 中文字幕乱码人妻无码久久| 久久久精品午夜免费不卡| 国产亚洲精品久久久久秋霞 | 粉嫩小泬无遮挡久久久久久| 国产午夜电影久久| 国产精品久久久天天影视香蕉| 777午夜精品久久av蜜臀| 国产午夜精品久久久久九九电影| 久久亚洲欧美日本精品| 波多野结衣AV无码久久一区| 久久国产精品一区| 久久久久久狠狠丁香| 久久精品九九亚洲精品| 久久天天躁狠狠躁夜夜2020一 | 久久91精品国产91久久户| 国内精品久久久久久久97牛牛| 欧美激情精品久久久久久| 久久伊人精品青青草原日本| 精品久久久久久久| 国产精品久久午夜夜伦鲁鲁| 97久久国产综合精品女不卡| 久久这里的只有是精品23| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 品成人欧美大片久久国产欧美| 久久久久亚洲AV成人网人人网站 | 久久久精品国产| 久久中文字幕视频、最近更新| 国产AⅤ精品一区二区三区久久| 久久福利青草精品资源站免费|