• <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>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

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

             

            作為系統(tǒng)服務(wù),IE下載從internet組件通常需要進(jìn)行認(rèn)證和檢查。對(duì)于發(fā)布者,有兩種機(jī)制:

            1、inf文件進(jìn)行發(fā)布

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

             

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

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

            如果不存在,會(huì)打開INF文件,按照INF文件進(jìn)行解釋安裝。

             

            CODEBASE       屬性

            internet上發(fā)布組件,極其重要的屬性就是codebase屬性了,因?yàn)榇?/span>url指定了一個(gè)“挑剔”的組件運(yùn)行所需的全部文件從哪兒獲取。

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

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

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

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

             

            INF文件格式

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

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

            代碼下載器理解其中幾個(gè)主要的節(jié)

            [Add.Code] [Setup Hooks]

            如果者兩個(gè)節(jié)均不存在,那么當(dāng)作標(biāo)準(zhǔn)的win32 inf格式進(jìn)行解釋

             

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

            [Add.Code]

            filename1=section-name1

            filename2=section-name2

             

            每一個(gè)文件自成一節(jié)(文件節(jié)),并進(jìn)行單獨(dú)描述安裝屬性。

            [section-name1]

            key1=value1

            key2=value2

             

            在一個(gè)文件節(jié)中,以下關(guān)鍵字可用:

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

            %opersys% 可以是 [win32 | mac] ,當(dāng)前 %cpu% 可以是 [x86 | ppc | mips | alpha].

             

            File=[url | thiscab]

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

            FileVersion=a,b,c,d

            文件版本定義

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

            組件的CLSID

            DestDir=[10 | 11]

            DestDir 可以設(shè)定為 10 \windows directory

            11      windows\system directory.

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

            RegisterServer=[yes | no]

            是否自行注冊(cè)組件,會(huì)覆蓋inf文件中的其他關(guān)于注冊(cè)的設(shè)定

            Hook=section-name3

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

            key1=value1

            key2=value2

             

            可以多個(gè)組件都掛同一個(gè)hook.

            以下key可用:

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

            File=[url]

            Run=[cmd-line]

            cab文件展開在臨時(shí)文件夾后運(yùn)行的名另。如果缺少此命令設(shè)定,將尋找 InfFile= and InfSection= keys 以運(yùn)行掛鉤節(jié)。

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

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

             

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

            [Setup Hooks]

            hookname1=section-name4

            hookname2=section-name5

             

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

            [Version]

            Signature="$CHICAGO$"

            AdvancedINF=2.0

             

            ;例子分析最后給出。

             

            Internet 組件下載服務(wù)

            Internet 組件下載服務(wù)通過單一函數(shù)導(dǎo)出:CoGetClassObjectFromURL。此函數(shù)下載應(yīng)用代碼,校驗(yàn)且安裝OLE組件,由IE實(shí)現(xiàn)

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

            "下載和安裝" 進(jìn)程處理以下步驟:

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

            調(diào)用 WinVerifyTrust 以確信所有下載文件安裝是安全的

            所有自注冊(cè)組件完成注冊(cè)

            增加對(duì)下載的組件的跟蹤的注冊(cè)項(xiàng)

            利用rclsid調(diào)用 CoGetClassObject

            在通常瀏覽器設(shè)定下,直接通過HTML OBJECT 元素獲取必須的參數(shù)。舉例:對(duì)于一個(gè) <OBJECT>標(biāo)簽"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).

             

            存儲(chǔ)/緩存下載的代碼

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

             

            Internet 搜索路徑

            當(dāng)Internet 組件下載調(diào)用下載代碼,它遍歷Internet搜索路徑尋找引用的組件。此處的路徑是對(duì)象對(duì)處服務(wù)器的列表,被GetClassObjectFromURL調(diào)用。 即使 <OBJECT> 標(biāo)記沒有指定CODEBASE 下載 OLE 控件,Internet 組件下載服務(wù)將依然使用Internet 搜索路徑尋找必要的代碼。

             

            Internet 搜索路徑語法

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

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

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

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

             

             

             

            Win32 INF 語法中特定變量:

            EXTRACT_DIR

            CAB文件展開后的目錄

            run=%EXTRACT_DIR%/mysetup.exe

             

            OBJECT_DIR

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

             一個(gè) internet inf的例子。

            我們通過Terminal Services 服務(wù)來控制遠(yuǎn)端計(jì)算機(jī)時(shí)除了可以通過遠(yuǎn)程連接管理器外,還可以通過一個(gè)web中的activex控件進(jìn)行發(fā)布,此控件信息在: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發(fā)布inf文件如下,我們進(jìn)行逐節(jié)分析:

             

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

            [VERSION]        ;確定版本,否則下載服務(wù)不認(rèn)可有關(guān)內(nèi)容

            signature="$CHICAGO$"

            AdancedINF=2.0

             

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

            msrdp.ocx=msrdp.ocx           ;的節(jié),此inf文件僅安裝一個(gè)組件

             

            [msrdp.ocx]                        add.code節(jié)指定的節(jié)

            file-win32-x86=thiscab        ;文件在當(dāng)前cab文件中

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

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

            RegisterServer=yes                                                        ;是否注冊(cè)組件,下在后注冊(cè)組件

             

            [Setup Hooks]                            ;無條件掛鉤      ,此節(jié)指定有多少無條件掛鉤,僅有一個(gè)

            AddToRegHook=AddToRegHook

             

            [AddToRegHook]                ;無條件掛鉤節(jié)

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

            InfSection=DefaultInstall       ;指定標(biāo)準(zhǔn)安裝文件

             

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

            AddReg=AddIMERegEntries              ;尋找 AddIMERegEntries 節(jié)

             

            [AddIMERegEntries]            ;按照標(biāo)準(zhǔn)inf文件中的addreg類節(jié)來解釋此節(jié)內(nèi)容

            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 大龍 閱讀(1478) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            无码国产69精品久久久久网站| 久久亚洲精品人成综合网| 久久国产成人午夜aⅴ影院 | 久久精品嫩草影院| 久久精品国产国产精品四凭 | 久久精品国产亚洲77777| 亚洲国产天堂久久综合网站| 免费精品久久天干天干| 99久久精品国产麻豆| 久久99这里只有精品国产| 久久96国产精品久久久| 亚洲国产另类久久久精品黑人| 国产综合成人久久大片91| 精品国产乱码久久久久久郑州公司 | 国产精品美女久久久| 四虎国产精品成人免费久久| 色综合合久久天天综合绕视看| 亚洲精品乱码久久久久久按摩 | 精品久久综合1区2区3区激情| 久久精品国产亚洲av影院| 久久久SS麻豆欧美国产日韩| 热RE99久久精品国产66热| 国产精品va久久久久久久| 国产精品久久久久久久 | 久久久久亚洲av成人无码电影| 青青草原综合久久| 久久99精品国产99久久| 久久精品国产99国产精偷| 久久人人爽人人爽人人片AV不| 少妇熟女久久综合网色欲| 久久www免费人成看国产片 | 国产偷久久久精品专区| 欧美久久久久久午夜精品| 色综合久久88色综合天天 | 日韩美女18网站久久精品| 欧美久久一级内射wwwwww.| 久久久久亚洲av毛片大| 日产精品久久久久久久| 久久久久亚洲AV成人片| 高清免费久久午夜精品| 国产精品丝袜久久久久久不卡|