用登錄檔儲存資料 (VB函式篇) (轉)
用登錄檔儲存資料(VB篇) 作 者 : 揚眉 簡介 登錄檔最開始是出現在 3.x,是用來為OLE儲存資料的。那時Windows和其應用的設定值大多都
儲存在各不相同的.INI中。例如我們最為熟悉的System.ini和Win.ini就是這樣的檔案。當越安越多,
這種檔案也越來越多,而且遍佈的各個角落。既不便於管理,也浪費了很多空間(因為這些檔案大多都很小)。 當Windows 95推出的時候,登錄檔應運而生。所有的設定值,不論是的,還是應用程式的,
都被儲存在一個樹型結構的中。這樣確實方便了不少,而且對多環境提供了更好的支援。而對程式設計師而言就麻煩了一些,
必須瞭解的是登錄檔的結構,又因為登錄檔不再是單一的文字檔案,所以必須用專門函式來操作登錄檔。 登錄檔(Registry)是儲存程式執行引數和使用者設定的最佳地方。聽過了太多的告誡,編輯登錄檔對很多人來
說似乎是一件神秘而複雜的事,但在VB中,透過四個登錄檔函式,一切都變得簡單起來。 如果你對登錄檔有一些瞭解,那麼應該知道登錄檔的結構和我們所熟悉的檔案系統的結構是一樣的,都是樹型結構。
用主鍵來代替目錄以劃分各種不同的資訊。在主鍵下面還可以有子主鍵和三種不同型別的鍵值。每個鍵值可以是字串,
二進位制值或者雙字值中的一種。 提供了一個標準的註冊位置(主鍵)以建立於 Visual Basic
的應用程式的程式資訊: HKEY_CURRENT_USERSoftwareand VBA Program Settings 下面的所有函式所讀寫的登錄檔路徑都是以這個路徑為根的相對位置。 SaveSetting 這個函式用來向登錄檔資料庫寫入一些資料 SaveSetting appname, section, key, setting appname 在向登錄檔寫入資料之前,你必須計劃好一個用在整個應用程式中的appname 。可以把登錄檔的內容比作一臺,
那麼appname就是器。它必須是一個字串,也可以用數字,不過要用CStr 函式把它轉換成字串格式。
事實上它代表的是應用程式或工程的名稱。一般來說,appname在整個應用程式中應該保持不便。 section section可以說是這個模型中的目錄,就向一臺計算機上的目錄一樣。它用來把設定分類,可以包含Key或者子section。
如果給它傳遞vbNullChar 這個值的話,就表示要操作的鍵是在根目錄下的,也就是在appname下面的。 key 相當於一個檔名。 setting 它代表檔案中的資訊,可以是一個數字或者字串。 完後,在登錄檔的HKEY_CURRENT_USERSoftwareVB and VBA Program Settingsappnamesection"主鍵下面
的名為“key”的鍵將被賦值為“setting”,
如果相應的主鍵或者鍵名不存在,將會被建立。 GetSetting 這個函式用來從登錄檔中提取資料。 GetSetting(appname, section, key[, default]) Appname,section和key的含義和上面的一樣。 default 如果Visual Basic沒有找到指定的鍵,函式將返回引數default中得值。這個引數是可選的,但是對錯誤情況的處理很方便。
如果沒有選用這個引數,
而指定的鍵的名稱不存在,函式將返回一個長度為0的字串。 下面看看例子: SaveSetting "Logon Master", "UsersUser0", _ "Name", "John" 註釋:這將把資料"John"儲存到登錄檔的 "Logon MasterUsersUser0Name" 註釋:不過這是相對路徑,相對於一個根 De.Print GetSetting("Logon Master", _ "UsersUser0", "Name", "Anonymous" 註釋:這將顯示"John" Debug.Print GetSetting("Logon Master", _ "UsersUser1", "Name", "Anonymous" 註釋:這次顯示的將是"Anonymous",因為在 註釋:"Logon MasterUsersUser1Name"沒有預先儲存值。 GetAllSettings 這個函式用來提取某個目錄(主鍵)下面的所有檔案(子鍵)。 GetAllSettings(appname, section) 引數的含義和其他的函式都是一樣的。但這個函式和其他幾個比起來更為複雜。他返回的的是一個2維字串陣列,
包含了所有的子鍵名稱和鄉音的子鍵值。看看下面這個例子,你很容易的就能搞清楚: 註釋: 定義一個Variant型別的變數來儲存GetAllSettings返回的二維陣列 註釋: Interger型別值用來計數 Dim MySettings As Variant, intSettings As Integer 註釋:先在登錄檔中填入一些值 SaveSetting "Logon Master", "UsersUser0", _ "Name", "John" SaveSetting "Logon Master", "UsersUser0", _ "Priviledges", "Supervisor" 註釋:提取預先設定的資料 MySettings = GetAllSettings("Logon Master", _ "UsersUser0") 註釋:顯示出來 For intSettings = LBound(MySettings, 1) _ To UBound(MySettings, 1) 註釋:MySettings(x,0)中包含的是鍵名,註釋:而MySettings(x,1) 中包含的是鍵值 Debug.Print MySettings(intSettings, 0), _ MySettings(intSettings, 1) Next intSettings 注意:GetAllSettings並不返回目錄名,只是返回鍵名和相應的鍵值。 DeleteSetting 除了儲存和提取資料,我們還要能夠刪除登錄檔中的註冊項。這就要用到DeleteSetting函式了。 DeleteSetting appname[, section[, key]] 這個函式用來刪除主鍵或者鍵。如果要刪除的是鍵,要給出它所在的鍵名。如果要刪除的是主鍵,
這它下面所有的鍵和子主鍵都會被刪除。如果你要刪除應用程式所有的登錄檔資訊,就只用指定appname就可以了。 例如: DeleteSetting "Logon Master", "UsersUser0", "Name" 註釋:這將刪除Name鍵。 DeleteSetting "Logon Master", "Users" 註釋:這將刪除"Logon MasterUsers"主鍵和其下的所有內容。 DeleteSetting "Logon Master" 註釋:這將刪除應用程式"Logon Master"下面的所有內容。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000230/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用Windows登錄檔儲存資訊 (轉)Windows
- VB中使用系統登錄檔 (轉)
- 登錄檔處理函式函式
- 登錄檔資料庫Registry (轉)資料庫
- Win32 SDK登錄檔操作函式——RegQueryValue (轉)Win32函式
- 資料儲存--檔案儲存
- 儲存函式儲存函式
- 資料儲存(歸檔解檔,沙河儲存)
- 程式執行資訊的非登錄檔儲存類(ini 檔案操作類) (轉)
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- 儲存過程與儲存函式儲存過程儲存函式
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- 資料儲存-領存高速海量資料記錄儲存模組產品介紹
- 儲存過程 函式儲存過程函式
- 函式索引的儲存函式索引
- SQL---------儲存函式SQL儲存函式
- Windows 98 登錄檔的應用(轉)Windows
- IOS資料儲存之檔案沙盒儲存iOS
- 在關聯式資料庫中儲存RDF (轉)資料庫
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 用vb操作檔案或資料夾
- iOS開發資料儲存篇—iOS中的幾種資料儲存方式iOS
- oracle資料塊中資料儲存(摘錄)Oracle
- 登錄檔資料提取工具RegRipper
- Android中的資料儲存之檔案儲存Android
- 用SharedPreference儲存資料
- 儲存過程與函式儲存過程函式
- MySQL 儲存函式及呼叫MySql儲存函式
- 用 Java 儲存點陣圖檔案 (轉)Java
- IOS資料儲存之歸檔/解檔iOS
- 服務端指南 資料儲存篇 | 選擇合適的資料儲存方案服務端
- win10系統修改登錄檔後儲存不了提示寫入登錄檔時出錯如何解決Win10
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- 轉錄_boson_儲存_lun
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- Spark2 載入儲存檔案,資料檔案轉換成資料框dataframeSpark
- elasticsearch: 指定索引資料的儲存目錄Elasticsearch索引