重要的類和操作:
microsoft.win32.registry : 提供訪問注冊表中的值和子項的基 registrykeys, 主要的幾個方法有 currentuser(對應注冊表的hkey_current_user), localmachine(對應注冊表的hkey_local_machine)
microsoft.win32.registrykey :封裝了對注冊表項的操作. 常用的方法屬性有:
1) 對項的操作: opensubkey, createsubkey, deletesubkey, deletesubkeytree, getsubkeynames
2) 對值的操作: getvalue, setvalue, deletevalue, getvaluenames
3) 其他操作: flush, close
4) 常用屬性: name, subkeycount, valuecount,
5) tostring : 返回值包括指定項的注冊表路徑和此項的十六進制值。注冊表路徑包括指定項的絕對根,總是從注冊表的一個基項(例如 hkey_local_machine)開始
1. 訪問當前應用程序對應的注冊表項
通過application.userappdataregistry 屬性可以獲得應用程序數據的注冊表項. 對屬性的訪問可以自動創建如下注冊表目錄([]內為對應的application的屬性.):
currentuser/software/ [companyname]/ [productname]/ [productversion]
注意其中包含了程序的版本信息,這就意味著當程序改變版本時, 我們就不得不去老版本的目錄下訪問或者在新版本的項下重新創建值. 所以對于某些與版本無關的信息,可以存放在上級項中(currentuser/software/ [companyname]/ [productname]).
2. 根據路徑獲得一個項
registrykey提供的opensubkey和createsubkey都是只能在當前項下創建子項, 無法遞歸創建. 為了解決這個問題,可以通過如下代碼創建 (keys數組中存儲了遞歸的子項的名稱):
public registrykey createsubkey(registrykey startkey, string[] keys) {
registrykey subkey = startkey;
for (int i=0; i<keys.getlength(0); i++) {
if (subkey.opensubkey(keys[i]) == null) {
subkey = subkey.opensubkey(keys[i], true);
} else {
subkey = subkey.createsubkey(keys[i]);
}
}
return subkey;
}
先寫到這兒,該去干活了
菜鳥學堂: