RegistryKey Sınıf

Tanım

Windows kayıt defterindeki bir anahtar düzeyi düğümünü temsil eder. Bu sınıf bir kayıt defteri kapsüllemesidir.

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
Devralma
Devralma
RegistryKey
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki kod örneği, HKEY_CURRENT_USER altında bir alt anahtar oluşturmayı, içeriğini işlemeyi ve sonra alt anahtarı silmeyi gösterir.

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

Açıklamalar

örneğini RegistryKeyalmak için sınıfının statik üyelerinden Registry birini kullanın.

Kayıt defteri, işletim sistemi ve bilgisayardaki uygulamalar için merkezi bir bilgi deposu işlevi görür. Kayıt defteri, içinde depolanan öğelerin mantıksal sıralamasını temel alarak hiyerarşik bir biçimde düzenlenmiştir (bu hiyerarşideki temel düzey öğeleri için bkz Registry . ). Bilgileri kayıt defterinde depolarken, depolanan bilgi türüne göre uygun konumu seçin. Diğer uygulamalar tarafından oluşturulan bilgilerin yok edilmesinden kaçının, çünkü bu uygulamalar beklenmeyen davranışlar sergileyebilir ve kendi uygulamanız üzerinde olumsuz bir etkiye neden olabilir.

Önemli

Bu tür arabirimini IDisposable uygular. Türünü kullanmayı bitirdiğinizde, doğrudan veya dolaylı olarak atmalısınız. Türü doğrudan atmak için yöntemini bir try/catch blok içinde çağırın.Dispose Bunu dolaylı olarak atmak için (C#'de) veya Using (Visual Basic'te) gibi using bir dil yapısı kullanın. Daha fazla bilgi için arabirim konusunun "IDisposable Uygulayan Bir Nesne Kullanma" bölümüne IDisposable bakın.

Kayıt defteri anahtarları, kayıt defterindeki temel kuruluş birimidir ve Dosya Gezgini klasörlerle karşılaştırılabilir. Bir klasörün alt klasörleri olabileceği gibi, belirli bir anahtarın alt anahtarları olabilir. Kullanıcı uygun izinlere sahip olduğu ve anahtar bir temel anahtar olmadığı veya doğrudan temel anahtarların altındaki düzeyde olmadığı sürece her anahtar silinebilir. Her anahtarın kendisiyle ilişkilendirilmiş birden çok değeri de olabilir (bir değer bir dosyayla karşılaştırılabilir), bilgileri depolamak için kullanılır; örneğin, bilgisayarda yüklü bir uygulama hakkındaki bilgiler. Her değer, gerektiğinde alınabilen veya güncelleştirilebilen belirli bir bilgi parçasını barındırıyor. Örneğin, anahtar HKEY_LOCAL_MACHINE\Software altında şirketiniz için bir RegistryKey ve ardından şirketinizin oluşturduğu her uygulama için bir alt anahtar oluşturabilirsiniz. Her alt anahtar, renk ayarları, ekran konumu ve boyutu veya tanınan dosya uzantıları gibi söz konusu uygulamaya özgü bilgileri tutar.

Kayıt defterinde depolanan bilgilerin diğer uygulamalar ve kullanıcılar tarafından kullanılabildiğini ve bu nedenle güvenlik verilerini veya kritik uygulama bilgilerini depolamak için kullanılmaması gerektiğini unutmayın.

Dikkat

Kötü amaçlı bir programın binlerce anlamsız alt anahtar veya anahtar/değer çifti oluşturabileceği şekilde nesneleri kullanıma sunma RegistryKey . Örneğin, çağrı yapanların rasgele anahtarlar veya değerler girmesine izin vermeyin.

.NET Framework 4'den başlayarak, kayıt defteri anahtarının uzunluğu artık 255 karakterle sınırlı değildir.

Özellikler

Handle

SafeRegistryHandle Geçerli RegistryKey nesnenin kapsüllediğini kayıt defteri anahtarını temsil eden bir nesne alır.

Name

Anahtarın adını alır.

SubKeyCount

Geçerli anahtarın alt anahtar sayısını alır.

ValueCount

Anahtardaki değerlerin sayısını alır.

View

Kayıt defteri anahtarını oluşturmak için kullanılan görünümü alır.

Yöntemler

Close()

anahtarı kapatır ve içeriği değiştirilmişse diske boşaltır.

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

(Devralındığı yer: MarshalByRefObject)
CreateSubKey(String)

Yeni bir alt anahtar oluşturur veya yazma erişimi için var olan bir alt anahtarı açar.

CreateSubKey(String, Boolean)

Yeni bir alt anahtar oluşturur veya belirtilen erişime sahip mevcut bir alt anahtarı açar. .NET Framework 4.6'dan itibaren kullanılabilir.

CreateSubKey(String, Boolean, RegistryOptions)

Yeni bir alt anahtar oluşturur veya belirtilen erişime sahip mevcut bir alt anahtarı açar. .NET Framework 4.6'dan itibaren kullanılabilir.

CreateSubKey(String, RegistryKeyPermissionCheck)

Belirtilen izin denetimi seçeneğini kullanarak yeni bir alt anahtar oluşturur veya yazma erişimi için var olan bir alt anahtarı açar.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions)

Belirtilen izin denetimi ve kayıt defteri seçeneklerini kullanarak bir alt anahtar oluşturur veya yazma erişimi için bir alt anahtar açar.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity)

Belirtilen izin denetimi seçeneğini, kayıt defteri seçeneğini ve kayıt defteri güvenliğini kullanarak bir alt anahtar oluşturur veya yazma erişimi için bir alt anahtar açar.

CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

Belirtilen izin denetimi seçeneğini ve kayıt defteri güvenliğini kullanarak yeni bir alt anahtar oluşturur veya yazma erişimi için var olan bir alt anahtarı açar.

DeleteSubKey(String)

Belirtilen alt anahtarı siler.

DeleteSubKey(String, Boolean)

Belirtilen alt anahtarı siler ve alt anahtar bulunamazsa özel durumun tetiklenip tetiklenmeyeceğini belirtir.

DeleteSubKeyTree(String)

Bir alt anahtarı ve alt alt anahtarları yinelemeli olarak siler.

DeleteSubKeyTree(String, Boolean)

Belirtilen alt anahtarı ve alt alt anahtarları yinelemeli olarak siler ve alt anahtar bulunamazsa bir özel durumun tetiklenip tetiklenmeyeceğini belirtir.

DeleteValue(String)

Belirtilen değeri bu anahtardan siler.

DeleteValue(String, Boolean)

Belirtilen değeri bu anahtardan siler ve değer bulunamazsa bir özel durumun tetiklenip tetiklenmeyeceğini belirtir.

Dispose()

RegistryKey sınıfının geçerli örneği tarafından kullanılan tüm kaynakları serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

İçeriği değiştirilmişse anahtarı kapatır ve diske boşaltır.

Flush()

Belirtilen açık kayıt defteri anahtarının tüm özniteliklerini kayıt defterine yazar.

FromHandle(SafeRegistryHandle)

Belirtilen tanıtıcıdan bir kayıt defteri anahtarı oluşturur.

FromHandle(SafeRegistryHandle, RegistryView)

Belirtilen tanıtıcı ve kayıt defteri görünümü ayarından bir kayıt defteri anahtarı oluşturur.

GetAccessControl()

Geçerli kayıt defteri anahtarı için erişim denetimi güvenliğini döndürür.

GetAccessControl(AccessControlSections)

Geçerli kayıt defteri anahtarı için erişim denetimi güvenliğinin belirtilen bölümlerini döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

(Devralındığı yer: MarshalByRefObject)
GetSubKeyNames()

Tüm alt anahtar adlarını içeren dize dizisini alır.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
GetValue(String)

Belirtilen adla ilişkilendirilmiş değeri alır. Kayıt defterinde ad/değer çifti yoksa döndürür null .

GetValue(String, Object)

Belirtilen adla ilişkilendirilmiş değeri alır. Ad bulunamazsa, sağladığınız varsayılan değeri döndürür.

GetValue(String, Object, RegistryValueOptions)

Belirtilen ad ve alma seçenekleriyle ilişkili değeri alır. Ad bulunamazsa, sağladığınız varsayılan değeri döndürür.

GetValueKind(String)

Belirtilen adla ilişkili değerin kayıt defteri veri türünü alır.

GetValueNames()

Bu anahtarla ilişkili tüm değer adlarını içeren dize dizisini alır.

InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

(Devralındığı yer: MarshalByRefObject)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

(Devralındığı yer: MarshalByRefObject)
OpenBaseKey(RegistryHive, RegistryView)

Belirtilen görünüme sahip yerel makinede istenen anahtarı temsil eden yeni RegistryKey bir açar.

OpenRemoteBaseKey(RegistryHive, String)

Uzak makinede istenen anahtarı temsil eden yeni RegistryKey bir anahtar açar.

OpenRemoteBaseKey(RegistryHive, String, RegistryView)

Belirtilen görünüme sahip uzak makinede istenen anahtarı temsil eden yeni bir kayıt defteri anahtarı açar.

OpenSubKey(String)

Bir alt anahtarı salt okunur olarak alır.

OpenSubKey(String, Boolean)

Belirtilen alt anahtarı alır ve yazma erişiminin anahtara uygulanıp uygulanmayacağını belirtir.

OpenSubKey(String, RegistryKeyPermissionCheck)

Okuma veya okuma/yazma erişimi için belirtilen alt anahtarı alır.

OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights)

Belirtilen erişim haklarını isteyerek okuma veya okuma/yazma erişimi için belirtilen alt anahtarı alır.

OpenSubKey(String, RegistryRights)

Belirtilen ad ve erişim haklarına sahip bir alt anahtar alır. .NET Framework 4.6'dan itibaren kullanılabilir.

SetAccessControl(RegistrySecurity)

Mevcut bir kayıt defteri anahtarına Windows erişim denetimi güvenliğini uygular.

SetValue(String, Object)

Belirtilen ad/değer çiftini ayarlar.

SetValue(String, Object, RegistryValueKind)

Belirtilen kayıt defteri veri türünü kullanarak kayıt defteri anahtarındaki bir ad/değer çiftinin değerini ayarlar.

ToString()

Bu anahtarın dize gösterimini alır.

Belirtik Arabirim Kullanımları

IDisposable.Dispose()

Bu API, ürün altyapısını destekler ve doğrudan kodunuzdan kullanıma yönelik değildir.

Geçerli anahtar üzerinde bir Close() gerçekleştirir.

Uzantı Metotları

GetAccessControl(RegistryKey)

Kayıt defteri anahtarının güvenlik bilgilerini döndürür.

GetAccessControl(RegistryKey, AccessControlSections)

Kayıt defteri anahtarının güvenlik bilgilerini döndürür.

SetAccessControl(RegistryKey, RegistrySecurity)

Mevcut bir kayıt defteri anahtarının güvenlik özniteliklerini değiştirir.

Şunlara uygulanır

Ayrıca bkz.