RegistryKey Kelas

Definisi

Mewakili simpul tingkat kunci di registri Windows. Kelas ini adalah enkaplasi registri.

public ref class RegistryKey sealed : MarshalByRefObject, IDisposable
public ref class RegistryKey sealed : IDisposable
public sealed class RegistryKey : MarshalByRefObject, IDisposable
public sealed class RegistryKey : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RegistryKey : MarshalByRefObject, IDisposable
type RegistryKey = class
    inherit MarshalByRefObject
    interface IDisposable
type RegistryKey = class
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type RegistryKey = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class RegistryKey
Inherits MarshalByRefObject
Implements IDisposable
Public NotInheritable Class RegistryKey
Implements IDisposable
Warisan
Warisan
RegistryKey
Atribut
Penerapan

Contoh

Contoh kode berikut menunjukkan cara membuat subkunci di bawah HKEY_CURRENT_USER, memanipulasi kontennya, lalu menghapus subkunci.

using namespace System;
using namespace System::Security::Permissions;
using namespace Microsoft::Win32;

int main()
{
   // Create a subkey named Test9999 under HKEY_CURRENT_USER.
   RegistryKey ^ test9999 = Registry::CurrentUser->CreateSubKey( "Test9999" );

   // Create two subkeys under HKEY_CURRENT_USER\Test9999.
   test9999->CreateSubKey( "TestName" )->Close();
   RegistryKey ^ testSettings = test9999->CreateSubKey( "TestSettings" );

   // Create data for the TestSettings subkey.
   testSettings->SetValue( "Language", "French" );
   testSettings->SetValue( "Level", "Intermediate" );
   testSettings->SetValue( "ID", 123 );
   testSettings->Close();

   // Print the information from the Test9999 subkey.
   Console::WriteLine( "There are {0} subkeys under Test9999.", test9999->SubKeyCount.ToString() );
   array<String^>^subKeyNames = test9999->GetSubKeyNames();
   for ( int i = 0; i < subKeyNames->Length; i++ )
   {
      RegistryKey ^ tempKey = test9999->OpenSubKey( subKeyNames[ i ] );
      Console::WriteLine( "\nThere are {0} values for {1}.", tempKey->ValueCount.ToString(), tempKey->Name );
      array<String^>^valueNames = tempKey->GetValueNames();
      for ( int j = 0; j < valueNames->Length; j++ )
      {
         Console::WriteLine( "{0,-8}: {1}", valueNames[ j ], tempKey->GetValue( valueNames[ j ] )->ToString() );

      }
   }
   
   // Delete the ID value.
   testSettings = test9999->OpenSubKey( "TestSettings", true );
   testSettings->DeleteValue( "id" );

   // Verify the deletion.
   Console::WriteLine( dynamic_cast<String^>(testSettings->GetValue(  "id", "ID not found." )) );
   testSettings->Close();

   // Delete or close the new subkey.
   Console::Write( "\nDelete newly created registry key? (Y/N) " );
   if ( Char::ToUpper( Convert::ToChar( Console::Read() ) ) == 'Y' )
   {
      Registry::CurrentUser->DeleteSubKeyTree( "Test9999" );
      Console::WriteLine( "\nRegistry key {0} deleted.", test9999->Name );
   }
   else
   {
      Console::WriteLine( "\nRegistry key {0} closed.", test9999->ToString() );
      test9999->Close();
   }
}
using System;
using System.Security.Permissions;
using Microsoft.Win32;

class RegKey
{
    static void Main()
    {
        // Create a subkey named Test9999 under HKEY_CURRENT_USER.
        RegistryKey test9999 =
            Registry.CurrentUser.CreateSubKey("Test9999");
        // Create two subkeys under HKEY_CURRENT_USER\Test9999. The
        // keys are disposed when execution exits the using statement.
        using(RegistryKey
            testName = test9999.CreateSubKey("TestName"),
            testSettings = test9999.CreateSubKey("TestSettings"))
        {
            // Create data for the TestSettings subkey.
            testSettings.SetValue("Language", "French");
            testSettings.SetValue("Level", "Intermediate");
            testSettings.SetValue("ID", 123);
        }

        // Print the information from the Test9999 subkey.
        Console.WriteLine("There are {0} subkeys under {1}.",
            test9999.SubKeyCount.ToString(), test9999.Name);
        foreach(string subKeyName in test9999.GetSubKeyNames())
        {
            using(RegistryKey
                tempKey = test9999.OpenSubKey(subKeyName))
            {
                Console.WriteLine("\nThere are {0} values for {1}.",
                    tempKey.ValueCount.ToString(), tempKey.Name);
                foreach(string valueName in tempKey.GetValueNames())
                {
                    Console.WriteLine("{0,-8}: {1}", valueName,
                        tempKey.GetValue(valueName).ToString());
                }
            }
        }

        using(RegistryKey
            testSettings = test9999.OpenSubKey("TestSettings", true))
        {
            // Delete the ID value.
            testSettings.DeleteValue("id");

            // Verify the deletion.
            Console.WriteLine((string)testSettings.GetValue(
                "id", "ID not found."));
        }

        // Delete or close the new subkey.
        Console.Write("\nDelete newly created registry key? (Y/N) ");
        if(Char.ToUpper(Convert.ToChar(Console.Read())) == 'Y')
        {
            Registry.CurrentUser.DeleteSubKeyTree("Test9999");
            Console.WriteLine("\nRegistry key {0} deleted.",
                test9999.Name);
        }
        else
        {
            Console.WriteLine("\nRegistry key {0} closed.",
                test9999.ToString());
            test9999.Close();
        }
    }
}
Imports System.Security.Permissions
Imports Microsoft.Win32

Public Class RegKey
    Shared Sub Main()

        ' Create a subkey named Test9999 under HKEY_CURRENT_USER.
        Dim test9999 As RegistryKey = _
            Registry.CurrentUser.CreateSubKey("Test9999")

        ' Create two subkeys under HKEY_CURRENT_USER\Test9999.
        test9999.CreateSubKey("TestName").Close()
        Dim testSettings As RegistryKey = _
            test9999.CreateSubKey("TestSettings")

        ' Create data for the TestSettings subkey.
        testSettings.SetValue("Language", "French")
        testSettings.SetValue("Level", "Intermediate")
        testSettings.SetValue("ID", 123)
        testSettings.Close()

        ' Print the information from the Test9999 subkey.
        Console.WriteLine("There are {0} subkeys under Test9999.", _
            test9999.SubKeyCount.ToString())
        For Each subKeyName As String In test9999.GetSubKeyNames()
            Dim tempKey As RegistryKey = _
                test9999.OpenSubKey(subKeyName)
            Console.WriteLine(vbCrLf & "There are {0} values for " & _
                "{1}.", tempKey.ValueCount.ToString(), tempKey.Name)
            For Each valueName As String In tempKey.GetValueNames()
                Console.WriteLine("{0,-8}: {1}", valueName, _
                    tempKey.GetValue(valueName).ToString())
            Next
        Next

        ' Delete the ID value.
        testSettings = test9999.OpenSubKey("TestSettings", True)
        testSettings.DeleteValue("id")

        ' Verify the deletion.
        Console.WriteLine(CType(testSettings.GetValue( _
            "id", "ID not found."), String))
        testSettings.Close()

        ' Delete or close the new subkey.
        Console.Write(vbCrLf & "Delete newly created " & _
            "registry key? (Y/N) ")
        If Char.ToUpper(Convert.ToChar(Console.Read())) = "Y"C Then
            Registry.CurrentUser.DeleteSubKeyTree("Test9999")
            Console.WriteLine(vbCrLf & "Registry key {0} deleted.", _
                test9999.Name)
        Else
            Console.WriteLine(vbCrLf & "Registry key {0} closed.", _
                test9999.ToString())
            test9999.Close()
        End If
   
    End Sub
End Class

Keterangan

Untuk mendapatkan instans RegistryKey, gunakan salah satu anggota Registry statis kelas.

Registri bertindak sebagai repositori pusat informasi untuk sistem operasi dan aplikasi di komputer. Registri diatur dalam format hierarkis, berdasarkan urutan logis elemen yang disimpan di dalamnya (silakan lihat Registry untuk item tingkat dasar dalam hierarki ini). Saat menyimpan informasi di registri, pilih lokasi yang sesuai berdasarkan jenis informasi yang disimpan. Pastikan untuk menghindari penghancuran informasi yang dibuat oleh aplikasi lain, karena ini dapat menyebabkan aplikasi tersebut menunjukkan perilaku yang tidak terduga, dan juga dapat memiliki efek buruk pada aplikasi Anda sendiri.

Penting

Jenis ini mengimplementasikan IDisposable antarmuka. Ketika Anda telah selesai menggunakan jenis , Anda harus membuangnya baik secara langsung atau tidak langsung. Untuk membuang jenis secara langsung, panggil metodenya Dispose dalam try/catch blok. Untuk membuangnya secara tidak langsung, gunakan konstruksi bahasa seperti using (di C#) atau Using (di Visual Basic). Untuk informasi selengkapnya, lihat bagian "Menggunakan Objek yang Mengimplementasikan IDisposable" di IDisposable topik antarmuka.

Kunci registri adalah unit dasar organisasi dalam registri, dan dapat dibandingkan dengan folder di File Explorer. Kunci tertentu dapat memiliki subkuntang, sama seperti folder dapat memiliki subfolder. Setiap kunci dapat dihapus, selama pengguna memiliki izin yang sesuai untuk melakukannya, dan kuncinya bukan kunci dasar atau di tingkat tepat di bawah kunci dasar. Setiap kunci juga dapat memiliki beberapa nilai yang terkait dengannya (nilai dapat dibandingkan dengan file), yang digunakan untuk menyimpan informasi - misalnya, informasi tentang aplikasi yang diinstal di komputer. Setiap nilai menyimpan satu informasi tertentu, yang dapat diambil atau diperbarui jika diperlukan. Misalnya, Anda dapat membuat RegistryKey untuk perusahaan Anda, di bawah HKEY_LOCAL_MACHINE\Software kunci, lalu subkunci untuk setiap aplikasi yang dibuat perusahaan Anda. Setiap subkuntang menyimpan informasi khusus untuk aplikasi tersebut, seperti pengaturan warna, lokasi dan ukuran layar, atau ekstensi file yang dikenali.

Perhatikan bahwa informasi yang disimpan dalam registri tersedia untuk aplikasi dan pengguna lain, dan oleh karena itu tidak boleh digunakan untuk menyimpan data keamanan atau informasi aplikasi penting.

Perhatian

Jangan mengekspos RegistryKey objek sia-sia sehingga program berbahaya dapat membuat ribuan subkunci atau pasangan kunci/nilai yang tidak berarti. Misalnya, jangan izinkan penelepon untuk memasukkan kunci atau nilai arbitrer.

Mulai dari .NET Framework 4, panjang kunci registri tidak lagi dibatasi hingga 255 karakter.

Properti

Handle

SafeRegistryHandle Mendapatkan objek yang mewakili kunci registri yang dienkapsulasi objek saat iniRegistryKey.

Name

Mengambil nama kunci.

SubKeyCount

Mengambil jumlah subkuncar kunci saat ini.

ValueCount

Mengambil jumlah nilai dalam kunci.

View

Mendapatkan tampilan yang digunakan untuk membuat kunci registri.

Metode

Close()

Menutup kunci dan menghapusnya ke disk jika isinya telah dimodifikasi.

CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
CreateSubKey(String)

Membuat subkunci baru atau membuka subkunci yang ada untuk akses tulis.

CreateSubKey(String, Boolean)

Membuat subkunci baru atau membuka subkunci yang ada dengan akses yang ditentukan. Tersedia mulai dari .NET Framework 4.6.

CreateSubKey(String, Boolean, RegistryOptions)

Membuat subkunci baru atau membuka subkunci yang ada dengan akses yang ditentukan. Tersedia mulai dari .NET Framework 4.6.

CreateSubKey(String, RegistryKeyPermissionCheck)

Membuat subkunci baru atau membuka subkunci yang ada untuk akses tulis, menggunakan opsi centang izin yang ditentukan.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

Membuat subkunci atau membuka subkunci untuk akses tulis, menggunakan opsi pemeriksaan izin dan registri yang ditentukan.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

Membuat subkunci atau membuka subkunci untuk akses tulis, menggunakan opsi centang izin, opsi registri, dan keamanan registri yang ditentukan.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

Membuat subkunci baru atau membuka subkunci yang ada untuk akses tulis, menggunakan opsi pemeriksaan izin dan keamanan registri yang ditentukan.

DeleteSubKey(String)

Menghapus subkunjud yang ditentukan.

DeleteSubKey(String, Boolean)

Menghapus subkunjung yang ditentukan, dan menentukan apakah pengecualian dinaikkan jika subkunjung tidak ditemukan.

DeleteSubKeyTree(String)

Menghapus subkuntang dan subkuntang anak apa pun secara rekursif.

DeleteSubKeyTree(String, Boolean)

Menghapus subkuntang yang ditentukan dan subkuntang anak apa pun secara rekursif, dan menentukan apakah pengecualian dimunculkan jika subkunjung tidak ditemukan.

DeleteValue(String)

Menghapus nilai yang ditentukan dari kunci ini.

DeleteValue(String, Boolean)

Menghapus nilai yang ditentukan dari kunci ini, dan menentukan apakah pengecualian dimunculkan jika nilai tidak ditemukan.

Dispose()

Merilis semua sumber daya yang digunakan oleh instans RegistryKey kelas saat ini.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Finalize()

Menutup kunci dan menghapusnya ke disk jika konten telah dimodifikasi.

Flush()

Menulis semua atribut kunci registri terbuka yang ditentukan ke dalam registri.

FromHandle(SafeRegistryHandle)

Membuat kunci registri dari handel tertentu.

FromHandle(SafeRegistryHandle, RegistryView)

Membuat kunci registri dari pengaturan gagang dan tampilan registri tertentu.

GetAccessControl()

Mengembalikan keamanan kontrol akses untuk kunci registri saat ini.

GetAccessControl(AccessControlSections)

Mengembalikan bagian yang ditentukan dari keamanan kontrol akses untuk kunci registri saat ini.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetSubKeyNames()

Mengambil array untai (karakter) yang berisi semua nama subkunjud.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetValue(String)

Mengambil nilai yang terkait dengan nama yang ditentukan. Mengembalikan jika pasangan nama/nilai tidak ada di registri null .

GetValue(String, Object)

Mengambil nilai yang terkait dengan nama yang ditentukan. Jika nama tidak ditemukan, mengembalikan nilai default yang Anda berikan.

GetValue(String, Object, RegistryValueOptions)

Mengambil nilai yang terkait dengan opsi nama dan pengambilan yang ditentukan. Jika nama tidak ditemukan, mengembalikan nilai default yang Anda berikan.

GetValueKind(String)

Mengambil jenis data registri dari nilai yang terkait dengan nama yang ditentukan.

GetValueNames()

Mengambil array string yang berisi semua nama nilai yang terkait dengan kunci ini.

InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
OpenBaseKey(RegistryHive, RegistryView)

Membuka baru RegistryKey yang mewakili kunci yang diminta pada komputer lokal dengan tampilan yang ditentukan.

OpenRemoteBaseKey(RegistryHive, String)

Membuka baru RegistryKey yang mewakili kunci yang diminta pada komputer jarak jauh.

OpenRemoteBaseKey(RegistryHive, String, RegistryView)

Membuka kunci registri baru yang mewakili kunci yang diminta pada komputer jarak jauh dengan tampilan yang ditentukan.

OpenSubKey(String)

Mengambil subkunjud sebagai baca-saja.

OpenSubKey(String, Boolean)

Mengambil subkunjud yang ditentukan, dan menentukan apakah akses tulis akan diterapkan ke kunci.

OpenSubKey(String, RegistryKeyPermissionCheck)

Mengambil subkuncar yang ditentukan untuk akses baca atau baca/tulis.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

Mengambil subkuntangan yang ditentukan untuk akses baca atau baca/tulis, yang meminta hak akses yang ditentukan.

OpenSubKey(String, RegistryRights)

Mengambil subkunjud dengan nama dan hak akses yang ditentukan. Tersedia mulai dari .NET Framework 4.6.

SetAccessControl(RegistrySecurity)

Menerapkan keamanan kontrol akses Windows ke kunci registri yang ada.

SetValue(String, Object)

Mengatur pasangan nama/nilai yang ditentukan.

SetValue(String, Object, RegistryValueKind)

Mengatur nilai pasangan nama/nilai dalam kunci registri, menggunakan jenis data registri yang ditentukan.

ToString()

Mengambil representasi string kunci ini.

Implementasi Antarmuka Eksplisit

IDisposable.Dispose()

API ini mendukung infrastruktur produk dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

Close() Melakukan pada kunci saat ini.

Metode Ekstensi

GetAccessControl(RegistryKey)

Mengembalikan informasi keamanan kunci registri.

GetAccessControl(RegistryKey, AccessControlSections)

Mengembalikan informasi keamanan kunci registri.

SetAccessControl(RegistryKey, RegistrySecurity)

Mengubah atribut keamanan kunci registri yang ada.

Berlaku untuk

Lihat juga