注冊(cè)表是Windows操作系統(tǒng)的信息存儲(chǔ)中心,存放著包括計(jì)算機(jī)硬件配置,、已安裝軟件的設(shè)置信息,、當(dāng)前用戶的環(huán)境設(shè)置及某些文件類型與對(duì)其進(jìn)行訪問(wèn)和操作的應(yīng)用程序之間的聯(lián)系等重要信息。Windows操作系統(tǒng)早期版本中存放在初始化文件(.ini)中的許多信息現(xiàn)在都存放在注冊(cè)表中了,。 我們開發(fā)的軟件常常要建立具有獨(dú)特?cái)?shù)據(jù)格式的數(shù)據(jù)文件,。作為一個(gè)專業(yè)化的商品軟件,其安裝程序有責(zé)任將其所用到的特殊格式的數(shù)據(jù)文件在注冊(cè)表中進(jìn)行注冊(cè),,以使之和Windows操作系統(tǒng)更好地集成在一起,,方便用戶操作。 下面,,我們就以舉例的形式詳細(xì)介紹如何在注冊(cè)表中對(duì)數(shù)據(jù)文件進(jìn)行注冊(cè),。這里假設(shè)軟件的可執(zhí)行文件為MyEdit.exe,其實(shí)質(zhì)為Windows附件中記事本應(yīng)用程序Notepad.exe的拷貝(在C:\Window s\system32目錄下),,并假設(shè)MyEdit所用的數(shù)據(jù)文件的擴(kuò)展名為.met,。 1.準(zhǔn)備工作 1)請(qǐng)先在桌面空白處單擊鼠標(biāo)右鍵,在彈出菜單中選擇“新建\文件夾”菜單項(xiàng),,并把“新建文件夾”重命名為“My_Edit”,,作為我們假設(shè)軟件的工作目錄,。 2)在My_Edit文件夾上雙擊鼠標(biāo)左鍵來(lái)打開該文件夾,,在其窗口菜單中選擇“文件\新建\文本文件”菜單項(xiàng),或在其文件列表區(qū)域單擊鼠標(biāo)右鍵并在彈出菜單中選擇“新建\文本文件”菜單項(xiàng),,把新創(chuàng)建的一個(gè)“新建 文本文件. txt”重命名為Test.met,。注意如果重命名前文件名中沒(méi)有顯示擴(kuò)展名“.txt”,需要在窗口菜單中選擇“查看\選項(xiàng)...”菜單項(xiàng),在“選項(xiàng)”對(duì)話框中選擇“查看”頁(yè),,把“隱藏已登記的文件類型的MS-DOS文件擴(kuò)展名”項(xiàng)改為不選狀態(tài),。 3)打開“資源管理器”選擇C:\Windows子目錄下的Notepad.exe,按住Ctrl鍵將其拖到 My_Edit文件夾中,并重命名為MyEdit.exe,。 說(shuō)明:現(xiàn)在,,文件Test.met的圖標(biāo)為帶有Windows標(biāo)志的缺省圖標(biāo),文件類型為“MET文件”,。在其文件名上雙擊鼠標(biāo)左鍵將彈出“打開方式”對(duì)話框讓用戶選擇與之相關(guān)聯(lián)的應(yīng)用程序(這里請(qǐng)勿進(jìn)行任何操作即選擇“取消 ”按鈕關(guān)閉對(duì)話框),。在其文件名上單擊鼠標(biāo)右鍵彈出菜單中的第一項(xiàng)為“打開方式”而非通常的“打開”?!靶陆ā辈藛谓M中也沒(méi)有有關(guān)該文件類型的選項(xiàng),。 2.注冊(cè)文件類型 1)在“開始”菜單中選擇“運(yùn)行...”菜單項(xiàng),在對(duì)話框中輸入Regedit并單擊“確定”按鈕啟動(dòng)注冊(cè)表編輯器,。 2)在樹形列表中選擇主鍵HKEY_CLASSES_ROOT,,單擊鼠標(biāo)右鍵并在彈出菜單中選擇“新建\主鍵 ”,并把新建的主鍵名由“New Key #1”改為“.met”,。 3)在右邊窗口中雙擊“(默認(rèn))”并在“鍵值”編輯框內(nèi)輸入My_Edit_Data_File后單擊“確定 ”按鈕。 4)重復(fù)2)操作,,只是在最后把新建的主鍵名改為3)中的輸入值My_Edit_Data_File,。 5)在右邊窗口中雙擊“(默認(rèn))”并在“鍵值”編輯框內(nèi)輸入“MyEdit數(shù)據(jù)文件”后單擊“確定”按鈕,。 6)關(guān)閉注冊(cè)表管理器,。 再次打開My_Edit文件夾(如果已經(jīng)打開,請(qǐng)按F5鍵以更新顯示信息),,我們看到文件Test.met的類型已被注冊(cè)為前面設(shè)定的“MyEdit數(shù)據(jù)文件”,。 //如果還是沒(méi)有顯示,可以再cmd中使用這兩條命令: taskkill /f /im explorer.exe start explorer.exe. 3.注冊(cè)文件圖標(biāo) 1)重復(fù)注冊(cè)文件類型的步驟1)打開注冊(cè)表管理器,。 2)在樹形列表中選擇HKEY_CLASSES_ROOT\ My_Edit_Data_File(各主鍵是按字母順序排列的),,在其下創(chuàng)建DefaultIcon主鍵。 3)選擇DefaultIcon,,在右邊窗口中雙擊“(默認(rèn))”并在“鍵值”編輯框內(nèi)輸入“C:\Windows\ Desktop\My_Edit\ MyEdit.exe,0”后單擊“確定”按鈕,。 4)關(guān)閉注冊(cè)表管理器。 說(shuō)明:我們?cè)倩氐組y_Edit文件夾(如果已經(jīng)打開,,請(qǐng)按F5鍵以更新顯示信息),,看到文件Test.met的圖標(biāo)已被修改為記事本應(yīng)用程序的圖標(biāo)。實(shí)際上,,文件的圖標(biāo)是由其DefaultIcon鍵值決定的,。鍵值分兩部分,中間用逗號(hào)隔開,。前面是包含圖標(biāo)資源的文件名,,可以為一個(gè)應(yīng)用程序,、動(dòng)態(tài)鏈接庫(kù)或資源文件(.icon文件),,后面是一個(gè)數(shù)字,正值表示圖標(biāo)在文件中的索引(從0開始),,負(fù)值(加一個(gè)“-”號(hào))表示圖標(biāo)的資源標(biāo)識(shí)(它的名字)。如果是文件的第一個(gè)圖標(biāo)資源,,可以省略逗號(hào)和數(shù)字,。 4.注冊(cè)彈出菜單項(xiàng) 1)重復(fù)注冊(cè)文件類型的步驟1)打開注冊(cè)表管理器。 2)在樹形列表中選擇HKEY_CLASSES_ROOT\ My_Edit_Data_File(各主鍵是按字母順序排列的),,在其下創(chuàng)建Shell主鍵,。 3)在剛剛創(chuàng)建的Shell下創(chuàng)建Open主鍵,再在Open下創(chuàng)建Command主鍵,。 4)選擇Command,,在右邊窗口中雙擊“(默認(rèn))”并在“鍵值”編輯框內(nèi)輸入“C:\ Windows\ Desktop\ My_Edit\ MyEdit.exe %1”后單擊“確定”按鈕,。 5)回到Shell下,,創(chuàng)建Print主鍵,再在Print下創(chuàng)建Command主鍵,。 6)選擇Command,,在右邊窗口中雙擊“(默認(rèn))”并在“鍵值”編輯框內(nèi)輸入“C:\Windows\D esktop\My_Edit\MyEdit.exe /p %1”后單擊“確定”按鈕。 7)關(guān)閉注冊(cè)表管理器,。 說(shuō)明:現(xiàn)在重新回到My_Edit文件夾,,在文件名Test.met上單擊右鍵,彈出菜單中已沒(méi)有了“打開方式”項(xiàng)而增加了“打開”和“打印”菜單項(xiàng),。單擊“打開”將用MyEdit.exe打開Test.met進(jìn)行編輯,,單擊 “打印”將把Test.met送往默認(rèn)打印機(jī)進(jìn)行打印。各菜單項(xiàng)下主鍵Command的數(shù)據(jù)為此菜單項(xiàng)對(duì)應(yīng)的操作命令,,其中%1表示當(dāng)前文件名,。這里只建立了比較常用也是相對(duì)標(biāo)準(zhǔn)的“打開”和“打印”菜單項(xiàng),按同樣格式,,我們也可以建立其他任何菜單項(xiàng),。 5.在“新建”菜單組中添加數(shù)據(jù)文件 1)重復(fù)注冊(cè)文件類型的步驟1)打開注冊(cè)表管理器。 2)在樹形列表中選擇HKEY_CLASSES_ROOT \ .met,,在其下創(chuàng)建ShellNew主鍵,。 3)選擇ShellNew主鍵,在窗口菜單中選擇“編輯\新建\串值”,,并把新建的串值名稱改為NullFile。 4)關(guān)閉注冊(cè)表管理器。 說(shuō)明:現(xiàn)在,,請(qǐng)?jiān)凇白烂妗笨瞻滋巻螕粲益I,,移動(dòng)鼠標(biāo)到“新建”菜單項(xiàng),會(huì)看到其中已經(jīng)新加了一項(xiàng)“MyEdit數(shù)據(jù)文件”,,選擇該項(xiàng)就會(huì)在“桌面”上新建一個(gè)名為“新建 MyEdit數(shù)據(jù)文件.met”的新文件,。其實(shí),我們還可以通過(guò)在ShellNew主鍵下建立其他串值對(duì)新建的文件進(jìn)行更多一些控制,,這樣的串值共有四個(gè),,它們是: (1)NullFile:它的串值數(shù)據(jù)是 " ",,用于創(chuàng)建一個(gè)空文件,。若存在此項(xiàng),則Data和FileName項(xiàng)將被忽略,。 ?。?)Data:它的串值數(shù)據(jù)是binary_value,用于創(chuàng)建一個(gè)包含有二進(jìn)制數(shù)據(jù)binary_value的新文件,。若存在NullFIle或FileName項(xiàng),,此將被忽略。 ?。?)FileName:它的串值數(shù)據(jù)是path_name,,用于生成一個(gè)由path_name所指定的文件的拷貝。若存在NullFIle項(xiàng),,此將被忽略,。 ?。?)Command:它的串值數(shù)據(jù)是path_name,,用于創(chuàng)建新文件后,執(zhí)行path_name所指定的命令行,。 至此,,我們已經(jīng)完成了基本的數(shù)據(jù)文件注冊(cè)工作。需要說(shuō)明的是,,上述工作我們是通過(guò)手工操作完成的,,在實(shí)際應(yīng)用中應(yīng)該由安裝程序通過(guò)調(diào)用RegCreateKeyEx()和RegSetValueEx()等Win32 API函數(shù)自動(dòng)完成,并在卸載程序中通過(guò)調(diào)用RegDeleteKey()等函數(shù)予以刪除,。應(yīng)用程序的卸載信息注冊(cè)在HKEY _LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Curre ntVersion \ Uninstall主鍵下面,,可以在這里新建一個(gè)名為MyEdit的主鍵,除了“(默認(rèn))” 外再新建兩個(gè)串值:DisplayName的數(shù)據(jù)指定一個(gè)在“控制面板”中的“添加/刪除應(yīng)用程序”對(duì)話框中顯示的字符串,,UninstallString的數(shù)據(jù)則指定運(yùn)行卸載程序的命令行,,包括路徑、可執(zhí)行文件名和所需的命令行參數(shù)。 另外,,通過(guò)擴(kuò)展Windows外殼(Shell)可以在某種類型文件的“屬性”中添加新的屬性頁(yè),,這涉及到一些比較深入的編程技術(shù),在此不予討論 |
|