Help and Support

文章編號: 816162 - 上次校閱: 2007年5月21日 - 版次: 2.4

如何撰寫您自己使用基底類別程式庫在 Visual C ++.NET 或 Visual C ++ 2005 存取函式的登錄

全部展開 | 全部摺疊

結論

本文將如何使用 Microsoft Visual C ++。 .NET 或 Microsoft Visual C ++ 2005 存取登錄。 執行這項操作,寫入存取函式,藉由使用基底類別程式庫的登錄。

使用登錄類別及 RegistryKey 類別

Microsoft.NET Framework 中, Registry 類別 」 和 「 RegistryKey 類別會提供登錄的控制項。

這些類別的定義會有 Microsoft.Win32 命名空間中] 和 [ mscorlib.dll 組件中。 您必須在您使用這些類別之前,使用命名空間和組件。

若要存取沒有任何限制登錄, Microsoft.Win32 命名空間中使用 [ Registry 類別 」 和 「 RegistryKey 類別。

登錄 類別會有七個欄位的成員,讓您存取到登錄的特定區域。 很類似開啟登錄機碼。 所有的這些成員傳回一個指標 RegistryKey 類別。
摺疊此表格展開此表格
ClassesRoot在 Windows 登錄主要金鑰 HKEY_CLASSES_ROOT。
CurrentConfig在 Windows 登錄主要金鑰 HKEY_CURRENT_CONFIG。
CurrentUser在 Windows 登錄主要金鑰 HKEY_CURRENT_USER。
DynData在 Windows 登錄主要金鑰 HKEY_DYN_DATA。
LocalMachine在 Windows 登錄主要金鑰 HKEY_LOCAL_MACHINE。
PerformanceData在 Windows 登錄主要金鑰 HKEY_PERFORMANCE_DATA。
使用者Windows 登錄主要機碼 HKEY_USERS。

建立 Visual C ++.NET 或 Visual C ++ 2005 應用程式

建立主控台應用程式專案以讀取並寫入登錄使用 Registry 類別及 RegistryKey 類別。 如果要執行這項操作,請執行這些步驟:
  1. 啟動 Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  2. 檔案 ] 功能表上請指向 [新增 ,然後再按一下 [ 專案 ]。
  3. 在 Microsoft Visual Studio.NET 2002 中,請按一下 [ 專案類型 下的 [ Visual C ++ 專案 ,然後再按一下在 [ 範本] 下的 Managed C ++ 應用程式 ]。

    在 Microsoft Visual Studio.NET 2003,請按一下 [ 專案類型 下的 [ Visual C ++ 專案 ,然後再按一下在 [ 範本] 下的 主控台應用程式 (.NET) ]。

    在 Visual 的 Studio 2005 請按一下 [ 專案類型 下的 [ Visual C ++ ,,然後按一下 [在 [ 範本] 下的 [ CLR 主控台應用程式 ]。
  4. 在 [ 名稱 ] 文字方塊請輸入 登錄 ,然後再按一下 [ 確定 ]。
  5. 開啟 registry.cpp 檔案,然後再加入 # include 指示詞的下方程式碼的下列行:
    using namespace System;
    using namespace System::Diagnostics;
    using namespace Microsoft::Win32;
    
  6. 加入下列程式碼,使用下的上方 _tmain() 函式的陳述式。

    請注意 在 Visual Studio 2005 中,函式會是 Main () 函式
    void WriteRegistry(RegistryKey __gc* ParentKey , String __gc* SubKey , String __gc* ValueName , Object *Value )
    {
    	RegistryKey __gc* Key;
        try
    	{
    		//Open the registry key.
    		Key = ParentKey->OpenSubKey(SubKey,true);
    		if (!Key) //if the key does not exist.
    		{
                //Create the Subkey
    			Key = ParentKey->CreateSubKey(SubKey);
    		}
            
    		//Set the value.
    		Key->SetValue(ValueName, Value);
    
    		Console::WriteLine(S"Value:{0} for {1} is successfully written.", Value, ValueName);
    	}
    	catch (Exception *e)
    	{
    		Console::WriteLine(S"Error occurs in WriteRegistry", e->Message); 
    	}
    }
    
    void ReadRegistry( RegistryKey __gc* ParentKey , String __gc* SubKey, String __gc* ValueName , Object *Value)
    {
        RegistryKey __gc* Key;
        try
    	{
            //Open the registry key.
            Key = ParentKey->OpenSubKey(SubKey, true);
    
            if (!Key)	//if the key does not exist
    		{
                throw new Exception(S"The registry key does not exist");
    		}
    
            //Get the value.
    		Value = Key->GetValue(ValueName);
    
    		Console::Write(S"Value:{0} for {1} is successfully retrieved.", Value, ValueName);
    	}
    	catch( Exception *e)
    	{
    		Console::Write(S"Error occurs in ReadRegistry", e->Message );
    	}
    }
    請注意 您必須加入 Common Language Runtime 支援編譯器選項 (/ clr: oldSyntax) 在 Visual C ++ 2005 中順利編譯先前的程式碼範例。 如果要請新增 Common Language Runtime 支援編譯器選項,在 Visual C ++ 2005,請依照下列步驟執行]:
    1. 按一下 Project ,然後再按一下 [<ProjectName>屬性。

      請注意 <ProjectName>是預留位置名稱。
    2. 展開 [ 組態屬性 ,然後再按一下 [一般]
    3. 按一下以選取 Common Language Runtime 支援,舊語法 (/ clr: oldSyntax) Common Language Runtime 支援 專案設定在右窗格中,請在按一下 [套用] 時,然後再按一下 [ [確定]
    Common Language Runtime 的相關資訊中,支援編譯器選項,請造訪 [下列 Microsoft 網站:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx (http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx)
  7. 取代 int _tmain() 函式所產生 Visual C ++.NET 使用下列程式碼。

    請注意 在 Visual Studio 2005 中,函式會是 Main () 函式
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Int32 i = 123;
    	System::Object* obj = __box(i);
    	WriteRegistry(Registry::CurrentUser, S"Software\\MySoftware", S"Count", obj);
    
        Object * Value;
    	ReadRegistry(Registry::CurrentUser, S"Software\\MySoftware", S"Count", Value);
    
    	Console::ReadLine();
    }
    
  8. 按 F5 執行應用程式。
請注意 這個程序會建立登錄機碼命名為 MySoftware HKEY_CURRENT_USER\Software 子機碼下,,建立一個名為 Count MySoftware 機碼下的 DWORD 值。 計數會具有值 123

?考

如需其他有關類別和本文中所使用的命名空間,詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/microsoft.win32.registrykey(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/microsoft.win32.registrykey(vs.71).aspx)
http://msdn2.microsoft.com/en-us/library/microsoft.win32.registry(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/microsoft.win32.registry(vs.71).aspx)
http://msdn2.microsoft.com/en-us/library/microsoft.win32(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/microsoft.win32(vs.71).aspx)

這篇文章中的資訊適用於:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
關鍵字:?
kbmt kbregistry kbhowtomaster KB816162 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。
按一下這裡查看此文章的英文版本:816162? (http://support.microsoft.com/kb/816162/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

文章翻譯