一、需求
當(dāng)前,使用asp開發(fā)動(dòng)態(tài)網(wǎng)頁,客戶端使用微軟公司的ie系列瀏覽器查看是一種很流行的模式。我們在開發(fā)過程中遇到了這樣的一個(gè)問題,由于技術(shù)和時(shí)間上的限制,必須在網(wǎng)頁中調(diào)用一個(gè)執(zhí)行程序。你當(dāng)然可以用一個(gè)超級鏈接直接指向所需的程序,但這樣做會被微軟“黑”一下的:每次在ie中打開這個(gè)鏈接時(shí)就會出現(xiàn)一個(gè)不受歡迎的警告框(當(dāng)然,它有它的道理,主要是出于安全方面的考慮),這對用戶來說是很能接受的。能不能用一個(gè)很方便、簡潔的方法來解決這個(gè)問題呢?
經(jīng)過一番研究,出臺了一個(gè)被稱為“李代桃僵”的方法:
l 在系統(tǒng)中創(chuàng)建一種特定的文件類型,如:*.spa;
2 將該類型的文件與要在asp中執(zhí)行的程序關(guān)聯(lián)起來;
3 超級鏈接指向一個(gè)設(shè)定的擴(kuò)展名是“spa”的文件。
這種做法的原理是:在ie中通過超級鏈接打開一個(gè)文件時(shí),如果瀏覽器自身能解釋該類型的文件,文件的內(nèi)容直接顯示在瀏覽器中,如文本文件,否則就搜索注冊表中設(shè)置,找出處理這種類型文件的程序,然后調(diào)用相應(yīng)的程序打開該文件。
二、方法
具體的實(shí)現(xiàn)方法為手工和自動(dòng)兩種方式,如下所示:
(一)、手工設(shè)置
l 打開資源管理器,如圖1所示,點(diǎn)擊[查看]菜單中的[文件夾選項(xiàng)]菜單,系統(tǒng)顯示[文件夾選項(xiàng)]對話框,如圖2 所示,其中有[文件類型]頁;
注意:須選中某個(gè)文件或文件夾,如果選中提[打印機(jī)]或[控制面板]等該對話框沒有這一頁
2 點(diǎn)擊[新建類型(n)…]按鈕,打開[添加新文件類型]對話框,如圖3所示。在[類型說明]文本框中輸入“asp關(guān)聯(lián)”,在[相關(guān)擴(kuò)展名]文本框中輸入“.spa”;(注:[內(nèi)容類型]是用做選擇已經(jīng)安裝的程序關(guān)聯(lián)某種類型的文件,該框不填)
3 打開”,點(diǎn)擊[瀏覽(r)…]按鈕,在對話框中選擇要在asp中調(diào)用的程序。
4 點(diǎn)擊每個(gè)對話框的[確定]的按鈕即可完成;
特別注意:如圖3所示的[添加新文件類型]對話框的下方面有一個(gè)[下載后確認(rèn)打開]選項(xiàng)。該選項(xiàng)在默認(rèn)狀態(tài)下是被選中的,這種情況下,在網(wǎng)頁中初次打開“.spa”類型的文件時(shí),系統(tǒng)會給出提示框詢問是否繼始終用某個(gè)程序打開該類型的文件。如果連這個(gè)框也不想出,則須將[下載后確認(rèn)打開]選項(xiàng)置于非選中狀態(tài)
設(shè)置完成后,超級鏈接指向一個(gè)文件,如a.spa,再點(diǎn)擊一次,你就會看到你需要的程序不講任何條件就運(yùn)行起來了!
自動(dòng)設(shè)置
很顯然,系統(tǒng)編制完成交到用戶手中時(shí),如果還要求用戶做上述設(shè)置是不現(xiàn)實(shí)的,軟件的生存能力會大打折扣,因?yàn)闆]有幾個(gè)人會愿意聽擴(kuò)展名和注冊表的。那么就必須讓述的工作自動(dòng)完成。
在手工設(shè)置的程序與文件關(guān)聯(lián)后,所有相關(guān)的信息都存在了注冊表中,因此只要在注冊表中寫入相同的內(nèi)容即可實(shí)現(xiàn)關(guān)聯(lián)可執(zhí)行程序的功能。在注冊表中寫入一些信息對現(xiàn)有的編程軟件來說是一件比較簡單的事情,象vb和delphi都提供了完整的存取注冊表內(nèi)容的的函數(shù),另外打包工具通常也是提供寫注冊表的功能的。那么如何在注冊表中找到對應(yīng)的信息呢。該當(dāng)方法如下:
l 打開注冊表編輯器(點(diǎn)擊開始菜單中的運(yùn)行,在文件框中輸入“regedit”,回車);
2 點(diǎn)擊注冊表編輯器中的[編輯]菜單中的[查找]菜單項(xiàng),在[查找目標(biāo)]文本框中輸入“.spa”,然后開始查找,很快就會找到一個(gè)名叫“.spa”的主鍵,它有一個(gè)默認(rèn)的字符串值“spafile”。點(diǎn)擊[注冊表]菜單中的[導(dǎo)出注冊表文件],將該主鍵的設(shè)置導(dǎo)出到一個(gè)文件中,如“spa1.reg”;
4 再次使用[編輯]菜單中的[查找]菜單項(xiàng),在[查找目標(biāo)]文本框中輸入“spafile”,然后開始查找,很快就會找到一個(gè)名叫“spafile”的主鍵,它有“shell”等子鍵,采用上一步同樣的方法,將該主鍵的設(shè)置導(dǎo)出到一個(gè)文件中,如“spa2.reg”
現(xiàn)在只需打開這兩個(gè)文件,參照其中的設(shè)置寫幾行程序,工作就完成了!
3.附兩個(gè)注冊表文件的內(nèi)容
l spa1.reg
[hkey_classes_root.spa]
@="spafile"
注:“@”是默認(rèn)的意思
l spa2.reg
[hkey_classes_rootspafile]
@="asp關(guān)聯(lián)"
"editflags"=hex:00,00,01,00
[hkey_classes_rootspafileshell]
@=""
[hkey_classes_rootspafileshellopen]
"editflags"=hex:01,00,00,00
[hkey_classes_rootspafileshellopencommand]
@="c:\windows\notepad.exe %1"
該文章在 2010/7/5 0:05:50 編輯過