C++Builder中注冊表的操作介紹
更新時間: 2007-05-23 09:12:49來源: 粵嵌教育瀏覽量:1244
在WIN9x和WINNT中,許多一點的功能都要通過對注冊表的操作來實現,在WinAPI中有RegCgreateKey()、RegOpenKey()、RegQueryValue()等等函數,但是,如果用這些函數來實現那將是非常的麻煩,幸虧我們有C++Builder,它提供了TRegistry類,有了TRe gistry類,對注冊表的操作就非常的簡單了,下面介紹一下TRegistry的屬性和方法:
TRegistry類一共有四個屬性。
屬性 類型 描述
CurrentKey int 包含當前鍵值的值,但它的意思不太好懂,所以不太常用
RootKey int 當前鍵值的根鍵,BCB定義有枚舉常量:HKEY_CURRENT_USER、
HKEY_CLASSES_ROOT、HKEY_LOCAL_MACHINE、HKEY_USERS、
HKEY_CURRENT_CONFIG、HKEY_DYN_DATA、HKEY_USERS。分別對應注冊表中相應的主鍵。生成一個TRegistry類的實例時RootKye缺省值為HKEY_CURRENT_USER
CurrentPath AnsiString 當前鍵值的文本描述,\HKEY_CURRENT_USER\Software\Borland的CurrentPath="Software\Borland",而RootKey=HKEY_CURRENT_USER LazyWrite bool 值為true:只要關閉一個鍵,就立即返回應用程序。值為false:必須寫完注冊表后才返回。
其缺省值為true。
TRegistry類的方法比較多,擇其常用的簡要說明如下:
方法 描述
CloseKey() 關閉一個鍵值并向鍵值寫數據,只要對鍵值操作完畢后就應該關閉它,不過你可以不必調用此方法,因為TRegistry的析構函數會自動調用它。
DeleteKey(AnsiString) 刪除鍵值,參數為要刪除的鍵值,如果參數為空字符串,則刪除當前鍵值OpenKey(Ansistring,bool) 打開一個鍵值,如果這個鍵值不存在,將由第二個參數決定是否自動建立。
LoadKey(AnsiString,AnsiString) 從文件裝入鍵值,個參數為鍵值,第二個參數為文件名KeyExists(AnsiString) 檢測一個鍵值是否存在。
SaveKey(AnsiString,AnsiString) 把一個鍵值保存到文件,參數說明參見LoadKey()
ReadInteger(AnsiString) 讀出一個鍵值為整數,如果失敗將拋出異常。同此函數類似的還有ReadBool()、ReadString()、ReadFloat()、ReadDateTome()、ReadBinaryData()等,用來讀出不同類型的鍵值。
ValueExists(AnsiString) 檢測一個值是否存在。
WriteInteger(AnsiString,int) 寫一個鍵值為整數,如果失敗將拋出異常。同此函數類似的還有WriteBool()、WriteString()、WriteFloat()、WriteDateTome()、WriteBinaryData()等,用來寫入不同類型的鍵值。
利用TRegistry是很容易的,一般來說,有以下四步操作:
1) 建立TRegistry類。2)利用OpenKey()方法打開一個鍵值。3)用ReadType()和WriteType()讀寫鍵值。4)調用CloseKey()關閉一個鍵值。
值得注意的是:在使用TRegistry類時,必須要加入此類的頭文件:#include,否則會發生什么,只要稍有C語言基礎都會明白。