RegistryKey Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en nod på nyckelnivå i Windows-registret. Den här klassen är en registersammankapsling.
public ref class RegistryKey sealed : MarshalByRefObject, IDisposable
public sealed class RegistryKey : MarshalByRefObject, IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RegistryKey : MarshalByRefObject, IDisposable
type RegistryKey = class
inherit MarshalByRefObject
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type RegistryKey = class
inherit MarshalByRefObject
interface IDisposable
Public NotInheritable Class RegistryKey
Inherits MarshalByRefObject
Implements IDisposable
- Arv
- Attribut
- Implementeringar
Exempel
I följande kodexempel visas hur du skapar en undernyckel under HKEY_CURRENT_USER, ändrar innehållet och sedan tar bort undernyckeln.
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
Kommentarer
Om du vill hämta en instans av RegistryKeyanvänder du en av klassens statiska medlemmar Registry .
Registret fungerar som en central lagringsplats för information för operativsystemet och programmen på en dator. Registret är organiserat i ett hierarkiskt format, baserat på en logisk ordning på de element som lagras i det (se Registry för basnivåobjekten i den här hierarkin). När du lagrar information i registret väljer du lämplig plats baserat på vilken typ av information som lagras. Se till att undvika att förstöra information som skapats av andra program, eftersom detta kan orsaka att dessa program uppvisar oväntat beteende och kan också ha en negativ effekt på ditt eget program.
Important
Den här typen implementerar IDisposable gränssnittet. När du har använt typen bör du kassera den på ett direkt eller indirekt sätt. Om du vill ta bort typen direkt anropar du dess Dispose metod i ett try/catch block. Om du vill ta bort det indirekt använder du en språkkonstruktion som using (i C#) eller Using (i Visual Basic). Mer information finns i avsnittet "Använda ett objekt som implementerar IDisposable" i IDisposable gränssnittet.
Registernycklar är den grundläggande organisationsenheten i registret och kan jämföras med mappar i Utforskaren. En viss nyckel kan ha undernycklar, precis som en mapp kan ha undermappar. Varje nyckel kan tas bort, så länge användaren har rätt behörighet att göra det och nyckeln inte är en basnyckel eller på nivån direkt under basnycklarna. Varje nyckel kan också ha flera värden associerade med den (ett värde kan jämföras med en fil), som används för att lagra informationen , till exempel information om ett program som är installerat på datorn. Varje värde innehåller en viss information som kan hämtas eller uppdateras vid behov. Du kan till exempel skapa en RegistryKey för ditt företag under nyckeln HKEY_LOCAL_MACHINE\Softwareoch sedan en undernyckel för varje program som företaget skapar. Varje undernyckel innehåller den information som är specifik för programmet, till exempel färginställningar, skärmplats och storlek eller identifierade filnamnstillägg.
Observera att information som lagras i registret är tillgänglig för andra program och användare och därför inte bör användas för att lagra säkerhetsdata eller viktig programinformation.
Caution
Exponera inte RegistryKey objekt på ett sådant sätt att ett skadligt program kan skapa tusentals meningslösa undernycklar eller nyckel/värde-par. Tillåt till exempel inte anropare att ange godtyckliga nycklar eller värden.
Från och med .NET Framework 4 är längden på en registernyckel inte längre begränsad till 255 tecken.
Egenskaper
| Name | Description |
|---|---|
| Handle |
Hämtar ett SafeRegistryHandle objekt som representerar registernyckeln som det aktuella RegistryKey objektet kapslar in. |
| Name |
Hämtar namnet på nyckeln. |
| SubKeyCount |
Hämtar antalet undernycklar för den aktuella nyckeln. |
| ValueCount |
Hämtar antalet värden i nyckeln. |
| View |
Hämtar vyn som användes för att skapa registernyckeln. |
Metoder
| Name | Description |
|---|---|
| Close() |
Stänger nyckeln och rensar den till disken om dess innehåll har ändrats. |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| CreateSubKey(String, Boolean, RegistryOptions) |
Skapar en ny undernyckel eller öppnar en befintlig undernyckel med den angivna åtkomsten. Tillgänglig från och med .NET Framework 4.6. |
| CreateSubKey(String, Boolean) |
Skapar en ny undernyckel eller öppnar en befintlig undernyckel med den angivna åtkomsten. Tillgänglig från och med .NET Framework 4.6. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
Skapar en undernyckel eller öppnar en undernyckel för skrivåtkomst med det angivna alternativet för behörighetskontroll, registeralternativ och registersäkerhet. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Skapar en undernyckel eller öppnar en undernyckel för skrivåtkomst med hjälp av de angivna behörighetskontroll- och registeralternativen. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Skapar en ny undernyckel eller öppnar en befintlig undernyckel för skrivåtkomst med det angivna alternativet för behörighetskontroll och registersäkerhet. |
| CreateSubKey(String, RegistryKeyPermissionCheck) |
Skapar en ny undernyckel eller öppnar en befintlig undernyckel för skrivåtkomst med det angivna alternativet för behörighetskontroll. |
| CreateSubKey(String) |
Skapar en ny undernyckel eller öppnar en befintlig undernyckel för skrivåtkomst. |
| DeleteSubKey(String, Boolean) |
Tar bort den angivna undernyckeln och anger om ett undantag utlöses om undernyckeln inte hittas. |
| DeleteSubKey(String) |
Tar bort den angivna undernyckeln. |
| DeleteSubKeyTree(String, Boolean) |
Tar bort den angivna undernyckeln och eventuella underordnade undernycklar rekursivt och anger om ett undantag utlöses om undernyckeln inte hittas. |
| DeleteSubKeyTree(String) |
Tar bort en undernyckel och eventuella underordnade undernycklar rekursivt. |
| DeleteValue(String, Boolean) |
Tar bort det angivna värdet från den här nyckeln och anger om ett undantag utlöses om värdet inte hittas. |
| DeleteValue(String) |
Tar bort det angivna värdet från den här nyckeln. |
| Dispose() |
Släpper alla resurser som används av den aktuella instansen RegistryKey av klassen. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Finalize() |
Stänger nyckeln och rensar den till disken om innehållet har ändrats. |
| Flush() |
Skriver alla attribut för den angivna öppna registernyckeln till registret. |
| FromHandle(SafeRegistryHandle, RegistryView) |
Skapar en registernyckel från en angiven referens- och registervyinställning. |
| FromHandle(SafeRegistryHandle) |
Skapar en registernyckel från ett angivet handtag. |
| GetAccessControl() |
Returnerar åtkomstkontrollsäkerheten för den aktuella registernyckeln. |
| GetAccessControl(AccessControlSections) |
Returnerar de angivna avsnitten i åtkomstkontrollsäkerheten för den aktuella registernyckeln. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetLifetimeService() |
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetSubKeyNames() |
Hämtar en matris med strängar som innehåller alla undernyckelnamn. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetValue(String, Object, RegistryValueOptions) |
Hämtar värdet som är associerat med det angivna namnet och hämtningsalternativen. Om namnet inte hittas returnerar du det standardvärde som du anger. |
| GetValue(String, Object) |
Hämtar värdet som är associerat med det angivna namnet. Om namnet inte hittas returnerar du det standardvärde som du anger. |
| GetValue(String) |
Hämtar värdet som är associerat med det angivna namnet. Returnerar |
| GetValueKind(String) |
Hämtar registerdatatypen för värdet som är associerat med det angivna namnet. |
| GetValueNames() |
Hämtar en matris med strängar som innehåller alla värdenamn som är associerade med den här nyckeln. |
| InitializeLifetimeService() |
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| OpenBaseKey(RegistryHive, RegistryView) |
Öppnar en ny RegistryKey som representerar den begärda nyckeln på den lokala datorn med den angivna vyn. |
| OpenRemoteBaseKey(RegistryHive, String, RegistryView) |
Öppnar en ny registernyckel som representerar den begärda nyckeln på en fjärrdator med den angivna vyn. |
| OpenRemoteBaseKey(RegistryHive, String) |
Öppnar en ny RegistryKey som representerar den begärda nyckeln på en fjärrdator. |
| OpenSubKey(String, Boolean) |
Hämtar en angiven undernyckel och anger om skrivåtkomst ska tillämpas på nyckeln. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst och begär de angivna åtkomsträttigheterna. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Hämtar den angivna undernyckeln för läs- eller läs-/skrivåtkomst. |
| OpenSubKey(String, RegistryRights) |
Hämtar en undernyckel med angivet namn och åtkomsträttigheter. Tillgänglig från och med .NET Framework 4.6. |
| OpenSubKey(String) |
Hämtar en undernyckel som skrivskyddad. |
| SetAccessControl(RegistrySecurity) |
Tillämpar Windows åtkomstkontrollsäkerhet på en befintlig registernyckel. |
| SetValue(String, Object, RegistryValueKind) |
Anger värdet för ett namn/värde-par i registernyckeln med den angivna registerdatatypen. |
| SetValue(String, Object) |
Anger det angivna namn/värdeparet. |
| ToString() |
Hämtar en strängrepresentation av den här nyckeln. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Detta API stöder produktinfrastrukturen och är inte avsett att användas direkt från koden. Utför en Close() på den aktuella nyckeln. |