RegistryKey Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um nó ao nível da chave no registo do Windows. Esta classe é um encapsulamento de registo.
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
- Herança
- Atributos
- Implementações
Exemplos
O exemplo de código seguinte mostra como criar uma subchave sob HKEY_CURRENT_USER, manipular o seu conteúdo e depois eliminar a subchave.
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
Observações
Para obter uma instância de RegistryKey, use um dos membros estáticos da Registry classe.
O registo atua como um repositório central de informação para o sistema operativo e as aplicações num computador. O registo está organizado num formato hierárquico, baseado numa ordenação lógica dos elementos armazenados nele (consulte Registry os itens de nível base nesta hierarquia). Ao armazenar informação no registo, selecione o local apropriado com base no tipo de informação armazenada. Certifique-se de evitar destruir a informação criada por outras aplicações, pois isso pode causar comportamentos inesperados e também ter um efeito negativo na sua própria aplicação.
Importante
Este tipo implementa a interface IDisposable. Quando terminar de usar o tipo, você deve eliminá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame seu método Dispose em um bloco try/catch. Para descartá-lo indiretamente, use uma construção de linguagem como using (em C#) ou Using (em Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa IDisposable" no tópico da IDisposable interface.
As chaves do registo são a unidade base de organização no registo e podem ser comparadas com pastas no Explorador de Ficheiros. Uma determinada chave pode ter subchaves, tal como uma pasta pode ter subpastas. Cada chave pode ser eliminada, desde que o utilizador tenha as permissões adequadas para tal, e a chave não seja uma chave base ou esteja ao nível diretamente abaixo das chaves base. Cada chave pode também ter múltiplos valores associados (um valor pode ser comparado a um ficheiro), que são usados para armazenar a informação – por exemplo, informação sobre uma aplicação instalada no computador. Cada valor contém uma informação específica, que pode ser recuperada ou atualizada quando necessário. Por exemplo, pode criar uma RegistryKey para a sua empresa, sob a tecla HKEY_LOCAL_MACHINE\Software, e depois uma subchave para cada aplicação que a sua empresa criar. Cada subchave contém a informação específica dessa aplicação, como definições de cor, localização e tamanho do ecrã, ou extensões de ficheiro reconhecidas.
Note que a informação armazenada no registo está disponível para outras aplicações e utilizadores, e por isso não deve ser usada para armazenar dados de segurança ou informações críticas de aplicação.
Atenção
Não exponha RegistryKey objetos de forma a que um programa malicioso possa criar milhares de subchaves sem significado ou pares chave/valor. Por exemplo, não permita que os chamadores introduzam chaves ou valores arbitrários.
A partir do .NET Framework 4, o comprimento de uma chave de registo já não está limitado a 255 caracteres.
Propriedades
| Name | Description |
|---|---|
| Handle |
Obtém um SafeRegistryHandle objeto que representa a chave de registo que o objeto atual RegistryKey encapsula. |
| Name |
Recupera o nome da chave. |
| SubKeyCount |
Recupera a contagem de subchaves da chave atual. |
| ValueCount |
Recupera a contagem de valores na chave. |
| View |
Obtém a vista que foi usada para criar a chave do registo. |
Métodos
| Name | Description |
|---|---|
| Close() |
Fecha a chave e despeja-a no disco se o seu conteúdo tiver sido modificado. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| CreateSubKey(String, Boolean, RegistryOptions) |
Cria uma nova subchave ou abre uma subchave existente com o acesso especificado. Disponível a partir do .NET Framework 4.6. |
| CreateSubKey(String, Boolean) |
Cria uma nova subchave ou abre uma subchave existente com o acesso especificado. Disponível a partir do .NET Framework 4.6. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions, RegistrySecurity) |
Cria uma subchave ou abre uma subchave para acesso de escrita, usando a opção de verificação de permissões especificada, a opção de registo e a segurança do registo. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Cria uma subchave ou abre uma subchave para acesso por escrita, usando as opções especificadas de verificação de permissões e registo. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Cria uma nova subchave ou abre uma subchave existente para acesso de escrita, usando a opção especificada de verificação de permissões e segurança do registo. |
| CreateSubKey(String, RegistryKeyPermissionCheck) |
Cria uma nova subchave ou abre uma subchave existente para acesso por escrita, usando a opção de verificação de permissão especificada. |
| CreateSubKey(String) |
Cria uma nova subchave ou abre uma subchave existente para acesso por escrita. |
| DeleteSubKey(String, Boolean) |
Elimina a subchave especificada e especifica se uma exceção é levantada caso a subchave não seja encontrada. |
| DeleteSubKey(String) |
Elimina a subchave especificada. |
| DeleteSubKeyTree(String, Boolean) |
Elimina recursivamente a subchave especificada e quaisquer subchaves filhas, e especifica se existe uma exceção caso a subchave não seja encontrada. |
| DeleteSubKeyTree(String) |
Apaga uma subchave e quaisquer subchaves filhas recursivamente. |
| DeleteValue(String, Boolean) |
Elimina o valor especificado desta chave e especifica se uma exceção é levantada caso o valor não seja encontrado. |
| DeleteValue(String) |
Elimina o valor especificado desta chave. |
| Dispose() |
Liberta todos os recursos usados pela instância atual da RegistryKey classe. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Finalize() |
Fecha a chave e despeja-a para o disco se o conteúdo tiver sido modificado. |
| Flush() |
Grava todos os atributos da chave de registo aberto especificada no registo. |
| FromHandle(SafeRegistryHandle, RegistryView) |
Cria uma chave de registo a partir de um handle especificado e de uma definição de visualização de registo. |
| FromHandle(SafeRegistryHandle) |
Cria uma chave de registo a partir de um handle especificado. |
| GetAccessControl() |
Devolve a segurança de controlo de acesso para a chave de registo atual. |
| GetAccessControl(AccessControlSections) |
Devolve as secções especificadas da segurança de controlo de acesso para a chave de registo atual. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetSubKeyNames() |
Recupera um array de cadeias que contém todos os nomes das subchaves. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetValue(String, Object, RegistryValueOptions) |
Recupera o valor associado ao nome especificado e às opções de recuperação. Se o nome não for encontrado, devolve o valor padrão que fornece. |
| GetValue(String, Object) |
Recupera o valor associado ao nome especificado. Se o nome não for encontrado, devolve o valor padrão que fornece. |
| GetValue(String) |
Recupera o valor associado ao nome especificado. Retorna |
| GetValueKind(String) |
Recupera o tipo de dados do registo do valor associado ao nome especificado. |
| GetValueNames() |
Recupera um array de cadeias que contém todos os nomes de valores associados a esta chave. |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| OpenBaseKey(RegistryHive, RegistryView) |
Abre uma nova RegistryKey que representa a chave solicitada na máquina local com a vista especificada. |
| OpenRemoteBaseKey(RegistryHive, String, RegistryView) |
Abre uma nova chave de registo que representa a chave solicitada numa máquina remota com a vista especificada. |
| OpenRemoteBaseKey(RegistryHive, String) |
Abre uma nova RegistryKey que representa a chave solicitada numa máquina remota. |
| OpenSubKey(String, Boolean) |
Recupera uma subchave especificada e especifica se o acesso de escrita deve ser aplicado à chave. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Recupera a subchave especificada para acesso de leitura ou leitura/escrita, solicitando os direitos de acesso especificados. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Recupera a subchave especificada para acesso de leitura ou leitura/escrita. |
| OpenSubKey(String, RegistryRights) |
Recupera uma subchave com o nome e direitos de acesso especificados. Disponível a partir do .NET Framework 4.6. |
| OpenSubKey(String) |
Recupera uma subchave como apenas leitura. |
| SetAccessControl(RegistrySecurity) |
Aplica a segurança do controlo de acesso do Windows a uma chave de registo existente. |
| SetValue(String, Object, RegistryValueKind) |
Define o valor de um par nome/valor na chave do registo, usando o tipo de dado de registo especificado. |
| SetValue(String, Object) |
Define o par nome/valor especificado. |
| ToString() |
Recupera uma representação em cadeia desta chave. |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código. Executa a Close() na tecla atual. |