C#註冊表操作匯總
一、註冊表基本知識
1) 結構
鍵->項->子項->值項(名稱、類型、數據)
REG_SZ 字符串
REG_BINARY 二進制
REG_DWORD 雙字
2) 組成
1.HKEY_CLASSES_ROOT 定義了系統中全部文件類型標識和基本操作標識
該主鍵包括文件擴展名和應用程序關聯的信息
主鍵下的子鍵決定怎樣在資源管理器和桌面中顯示該類文件及其圖標
不是一個單獨的分支,而僅僅是HKEY_LOCAL_MACHINE\SOFTWARE\Classes的一個映射
2.HKEY_CURRENT_USER 當前用戶的配置信息。包含環境變量、桌面設置、網絡
連接、軟件執行信息等
3.HKEY_LOCAL_MACHINE 本機相關的系統信息,包含硬件信息、驅動信息、內存
數據、總線數據等
當中的信息與特定用戶無關,可供全部用戶使用。
4.HKEY_USER 全部用戶的信息
該子鍵下保存了改用戶的桌面設置、背景位圖、應用程序快捷鍵、字體等信息。而這些信息都能夠通過控制面板等工具設定。
應用程序也不直接訪問該主鍵,而是通過HKEY_CURRENT_USER主鍵進行訪問。
5.HKEY_CURRENT_CONFIG 本地計算機啟動時的配置的相關信息。如環境信息、
桌面主題、背景色之類
也僅僅是HKEY_LOCAL_MACHINE\CONFIG結構中的一個映射。
3) C#操作註冊表
<span style="font-size:14px;">Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\\\MapWinGISConfig",false); Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\\\MapWinGISConfig");</span>
二、使用註冊表
l 在“資源管理器右鍵/新建”和“桌面右鍵菜單/新建”中加入新建自己的文件類型。
該演示樣例使用代碼表示:
//設置右鍵
RegistryKeykey1 = Registry.ClassesRoot.CreateSubKey(".acc");
key1.SetValue("", "acc");
RegistryKeykey2 = key1.CreateSubKey("ShellNew");
key2.SetValue("NullFile", "");
key1.Close();
key2.Close();
//設置關聯後綴名
key1 = Registry.ClassesRoot.CreateSubKey("acc");
key1.SetValue("", "accfile");
key2 = key1.CreateSubKey("DefaultIcon");
key2.SetValue("", "c:\\acc.ico"); //c:\\Windows\\notepad.exe,1
key2.Close();
key2 = key1.CreateSubKey("shell\\open\\command");
key2.SetValue("", "c:\\windows\\notepad.exe");
Tip: .acc的子鍵ShellNew就代表創建一個右鍵新建菜單。而ShellNew以下的值NullFile代表空文件。
HKEY_CLASSES_ROOT\.zip\ShellNew值
FileName d:\Program Files\HaoZip\ZipNew.data 代表什麽呢?
c:\\Windows\\notepad.exe,1 表示不適用該exe的圖標。使用系統默認的圖標,若不設置就會顯示默認打開程序的小圖標
c:\\Windows\\notepad.exe,0表示使用和exe一樣的圖標。
總結右鍵新建設置步驟:
1.在HKEY_CLASSES_ROOT中新建子項後綴名“.acc”。
2.設置.acc的默認值“accfile”該值能夠隨便。但最好是acc或accfile什麽的。
3.新建.acc子項ShellNew,並新建字符串值 NullFile\FileName 註意必須是這兩個名而且必
須設置。但值設置與不設置沒影響,依據須要。
4.新建accfile子項並設置默認值“acc文件”該值必須設置。用於指示新建的acc文件的名
稱。 至此右鍵新建菜單就完畢了。
5.可是為了讓新建的文件有圖標和有關聯程序。需設置DefaultIcon和shell\open\command\
這樣新建的acc文件就有了關聯程序。
l 將指定擴展名的文件管理到指定的程序
該演示樣例使用手動設置:
首先講述這些鍵中的值項的含義(以.txt為例)。
一般後綴子鍵中會設置這例如以下三個值
1.(默認):在關聯中最重要的一個值。決定了當前後綴的文件交給誰而且怎麽處理。這裏大家看到的內容是“txtfile”。事實上這個.txt鍵僅僅是相當於一個索引。該鍵中並沒有實際的處理說明,而實際的處理都交給了還有一個鍵。那個鍵的名字就是這裏的“(默認)”給出的。
2. ContentType:這裏指定了這個文件內容是什麽類型。這個值能夠接受非常多參數,這個參數的列表能夠再MSDN中查找ContentType看到。
這個值存在的意義是當系統要處理這個文件內容的時候。和這個後綴名關聯在一起的程序會依據這個值決定怎樣打開並展現文件裏的內容。
3.PerceivedType:這個值也是一個類型的標記。他的用處呢?舉個樣例。假設這個值的內容是video的時候。
我們打開一些視頻播放器,很多播放器第一次打開非常可能會搜索電腦硬盤,尋找能夠播放的文件並展如今“播放列表”中。而這個搜索過程就是依據這個值進行的。
以下跳轉到負責真正處理和打開工作的鍵中,對於我們的樣例.txt。處理鍵txtfile,找到該鍵,而且所有展開,能夠看到例如以下內容:
選中最頂層的txtfile看右邊界面顯示的內容:
1.(默認):這裏是文件類型的說明,大家右擊文件圖標。選擇屬性的時候,在屬性中的文件類型框中能夠看到這個值。
2.EditFlags:標識這個文件的讀寫權限,比方是僅僅讀,還是可讀寫。。。等等,這個在文件屬性裏也能改動。
3.FriendlyTypeName:這個值是應用程序的友好名稱。這個值事實上就是說明這個處理鍵相應的應用程序是哪個,大家打開文件屬性找一找,也能找到這個值的身影。只是記住,這個值可不是起決定作用。決定作用在子鍵中。
回到txtfile鍵層次圖中:.
1.DefaultIcon設置這一類型文件的圖標。能夠直接指定ico也能夠使用notepad.exe,0即使用exe的圖標。,0表示使用和exe同樣的圖標,,1表示不使用exe圖標而是用系統默認圖標。若不設置不論什麽值則會顯示默認代開程序的小圖標。
2. shell以下一般會有 open。print,edit等等。。
。
open 該後綴文件的默認代開程序。在程序後面加%1 表示雙擊時默認啟用程序。edit表示編輯時的文件、print打印時的文件。
總結文件關聯手動實現步驟:
1.HKEY_CLASSES_ROOT下新建子項”.abc”,設置默認值 abcfile
2.HKEY_CLASSES_ROOT 下新建子項”abcfile”, 不設置該默認值。
3.在abcfile下新建子項,DefaultIcon和shell\open\command。分別設置默認圖標和默認啟
動程序。
C#註冊表操作匯總