如何在C 中輕鬆操作登錄檔

2021-04-06 16:55:23 字數 2894 閱讀 9139

visual studio .net以前的版本,要對登錄檔進行修改,則需要呼叫系統api,而現在則不用那麼麻煩,因為.net已經把登錄檔相關的操作封裝到乙個類中,呼叫的時候只要只要呼叫此類物件相應的屬性或方法即可。

以下就登錄檔這個類進行說明。

首先,要引入註冊類所在的nampespace,如下:

接下來就是對登錄檔的操作,則第一步要像以前操作的那樣,需要設定登錄檔的位置,例如:

registrykey rklocalm = registry.localmachine;

而登錄檔各個根的具體對應如下:

hkey_classes_root

classesroot

hkey_current_user

currentuser

hkey_local_machine

localmachine

hkey_users

users

hkey_current_config

currentconfig

hkey_dyn_data

dyndata

hkey_performance_data

performancedata

然後,就用上面初始化後的物件,來操作登錄檔子鍵。

以下就舉幾個常用的用例。

第一,

列舉某個子鍵的所含子項以及子鍵的值;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbcinst.ini/microsoft access driver (*.mdb)";

registrykey rksub = rklocalm.opensubkey( strsubkey );

// get sub keys

string strsubkeys = rksub.getsubkeynames();

for( int i = 0; i < strsubkeys.length; i++ )

debug.writeline( strsubkeys[i] );

// get data name and its value

string strdata = rksub.getvaluenames();

for( int i = 0; i < strdata.length; i++ )

:", strdata[i],

rksub.getvalue( strdata[i] ) ) ); }

rklocalm.close();

第二, 建立子項;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbcinst.ini/microsoft access driver (*.mdb)";

registrykey rksub = rklocalm.opensubkey( strsubkey, true );

rksub.setvalue( "test", "test" );//the type of value according value itself

rklocalm.close();

第三, 刪除子項;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbc.ini/dbnewtest";

registrykey rksub = rklocalm.opensubkey( strsubkey, true );

rksub.deletevalue( "driverid", false );

rklocalm.close();

第四, 新增某個子鍵的值;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbc.ini/dbnewtest/test";

registrykey rksub = rklocalm.createsubkey( strsubkey );

rklocalm.close();

第五, 刪除某個子鍵的值;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbc.ini/dbnewtest";

registrykey rksub = rklocalm.opensubkey( strsubkey, true );

rksub.deletesubkey( "test", false );

rklocalm.close();

第六, 刪除某個子鍵下所有子鍵和子項;

registrykey rklocalm = registry.localmachine;

const

string strsubkey = @"software/odbc/odbc.ini";

registrykey rksub = rklocalm.opensubkey( strsubkey, true );

rksub.deletesubkeytree( "dbnewtest");

rklocalm.close();

其實用到最多的是opensubkey,要注意的是,如果要相對子鍵進行操作的話,一定要加上「true」這個值,以標明對當前開啟的子鍵能具有可寫的能力。否則,預設開啟的方式,是不具有可寫的能力,這樣對待子項進行新增、刪除以及修改等操作,會出現異常。

在C 中輕鬆操作登錄檔

visual studio net以前的版本,要對登錄檔進行修改,則需要呼叫系統api,而現在則不用那麼麻煩,因為.net已經把登錄檔相關的操作封裝到乙個類中,呼叫的時候只要只要呼叫此類物件相應的屬性或方法即可。以下就登錄檔這個類進行說明。首先,要引入註冊類所在的nampespace,如下 接下來就...

如何在C 中讀寫登錄檔

登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊 以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有 可能導致整個系統的完全癱瘓。所以...

在Delphi中輕鬆操作登錄檔TRegistry類

在delphi中輕鬆操作登錄檔 tregistry類 在應用程式中,經常需要對登錄檔進行各種操作,如將程式名稱 安裝路徑等資訊儲存到登錄檔中。delphi對相應api函式做了進一步封裝,使得在應用程式中操作登錄檔更加簡單。1 原理 delphi提供了tregistry類,它直接繼承自tobject類...