如今修改注冊表成為繼超頻之後的又一大熱點,許多CFAN通過對注冊表的修改使Win98顯得更加個性化,諸多報刊雜志也紛紛扯起注冊表這面旗幟,令人遺憾的是,在介紹注冊表修改的眾多的文章中,大都以手工修改為例,極少數文章也只介紹有關修改注冊表軟件的用法,至於如何在程序中實現卻無人提及。為此我在Visual Studio6.0幫助文件中用Registry關鍵字進行搜索,在翻譯軟件幫助下及不斷的上機實踐下,我終於摸索出使用注冊表接口(API)函數的一些用法,現拿出來與大家共享。
在程序中使用注冊表,不外乎創建、打開、讀取、設置、刪除這五個常規操作,(要想獲得更詳細的資料可以參考Visual Studio6.0幫助目錄中MSDN Library Visual Studio6.0|Platform SDK|Window Base Services|General Library|Registry條目)。下面我們就來關注這五個接口函數的用法:
一、 創建鍵RegCreateKeyEx
通過RegCreateKeyEx函數可以在注冊表中創建鍵,如果需要創建的鍵已經存在了,則打開鍵。函數原型如下:
LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTESlpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
各參數及返回值的含義如下:
·hKey為主鍵值,可以取下面的一些數值:
HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE
HKEY_USER、HKEY_PERFORMANCE_DATA(WINNT操作系統)
HKEY_DYN_DATA(WIN9X操作系統)
·參數lpSubKey為一個指向以零結尾的字符串的指針,其中包含將要創建或打開的子鍵的名稱。子鍵不可以用反斜線()開始。該參數可以為NULL。
·Reserved保留,必須設置為0。
·參數lpClass一個指向包含鍵類型的字符串。如果該鍵已經存在,則忽略該參數。
·參數dwOptions為新創建的鍵設置一定的屬性。可以取下面的一些數值:
REG_OPTION_NON_VOLATILE 新創建的鍵為一個非短暫性的鍵(數據信息保存在文件中,當系統重新啟動時,數據信息恢復)
REG_OPTION_VOLATILE 新創建的鍵為一個短暫性的鍵(數據信息保存在內存中)。Windows95忽略該數值。
REG_OPTION_BACKUP_RESTORE 僅在WINNT中支持,可以提供優先級支持。
·參數samDesired用來設置對鍵訪問的權限,可以取下面的一些數值:
KEY_CREATE_LINK 准許生成符號鍵
KEY_CREATE_SUB_KEY 准許生成子鍵
KEY_ENUMERATE_SUB_KEYS 准許生成枚舉子鍵
KEY_EXECUTE 准許進行讀操作
KEY_NOTIFY 准許更換通告
KEY_QUERY_VALUE 准許查詢子鍵
KEY_ALL_ACCESS 提供完全訪問,是上面數值的組合
KEY_READ 是下面數值的組合:
KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY
KEY_SET_VALUE 准許設置子鍵的數值
KEY_WRITE 是下面數值的組合:
KEY_SET_VALUE、KEY_CREATE_SUB_KEY