RegistryKey Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um nó de nível de chave no registro Windows. Essa classe é um encapsulamento do Registro.
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 a seguir mostra como criar uma subchave em HKEY_CURRENT_USER, manipular seu conteúdo e, em seguida, excluir 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
Comentários
Para obter uma instância de RegistryKey, use um dos membros estáticos da Registry classe.
O registro atua como um repositório central de informações para o sistema operacional e os aplicativos em um computador. O registro é organizado em um formato hierárquico, com base em uma ordenação lógica dos elementos armazenados dentro dele (consulte Registry os itens de nível base nessa hierarquia). Ao armazenar informações no registro, selecione o local apropriado com base no tipo de informação que está sendo armazenada. Evite destruir informações criadas por outros aplicativos, pois isso pode fazer com que esses aplicativos exibam um comportamento inesperado e também possam ter um efeito adverso em seu próprio aplicativo.
Importante
Esse tipo implementa a IDisposable interface. Quando terminar de usar esse tipo ou objeto, você deverá descartá-lo de forma direta ou indireta. Para descartar o tipo diretamente, chame o método Dispose dele em um bloco try/catch. Para descartá-lo indiretamente, use um constructo de linguagem como using (em C#) ou Using (no 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 Registro são a unidade base da organização no registro e podem ser comparadas com pastas no Explorador de Arquivos. Uma chave específica pode ter subchaves, assim como uma pasta pode ter subpastas. Cada chave pode ser excluída, desde que o usuário tenha as permissões apropriadas para fazer isso, e a chave não seja uma chave base ou no nível diretamente sob as chaves base. Cada chave também pode ter vários valores associados a ela (um valor pode ser comparado a um arquivo), que são usados para armazenar as informações , por exemplo, informações sobre um aplicativo instalado no computador. Cada valor contém uma informação específica, que pode ser recuperada ou atualizada quando necessário. Por exemplo, você pode criar uma RegistryKey para sua empresa, sob a chave HKEY_LOCAL_MACHINE\Softwaree, em seguida, uma subchave para cada aplicativo que sua empresa cria. Cada subchave contém as informações específicas desse aplicativo, como configurações de cor, local e tamanho da tela ou extensões de arquivo reconhecidas.
Observe que as informações armazenadas no registro estão disponíveis para outros aplicativos e usuários e, portanto, não devem ser usadas para armazenar dados de segurança ou informações críticas do aplicativo.
Caution
Não exponha RegistryKey objetos de forma que um programa mal-intencionado possa criar milhares de subchaves sem sentido ou pares chave/valor. Por exemplo, não permita que os chamadores insiram chaves ou valores arbitrários.
A partir do .NET Framework 4, o comprimento de uma chave do Registro não é mais limitado a 255 caracteres.
Propriedades
| Nome | Description |
|---|---|
| Handle |
Obtém um SafeRegistryHandle objeto que representa a chave do Registro encapsulada pelo objeto atual RegistryKey . |
| 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 exibição que foi usada para criar a chave do Registro. |
Métodos
| Nome | Description |
|---|---|
| Close() |
Fecha a chave e a libera para o disco se o conteúdo tiver sido modificado. |
| CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se 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 gravação, usando a opção de verificação de permissão especificada, a opção registro e a segurança do Registro. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistryOptions) |
Cria uma subchave ou abre uma subchave para acesso de gravação, usando as opções de verificação de permissão e registro especificadas. |
| CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity) |
Cria uma nova subchave ou abre uma subchave existente para acesso de gravação, usando a opção de verificação de permissão especificada e a segurança do Registro. |
| CreateSubKey(String, RegistryKeyPermissionCheck) |
Cria uma nova subchave ou abre uma subchave existente para acesso de gravação usando a opção de verificação de permissão especificada. |
| CreateSubKey(String) |
Cria uma nova subchave ou abre uma subchave existente para acesso de gravação. |
| DeleteSubKey(String, Boolean) |
Exclui a subchave especificada e especifica se uma exceção é gerada se a subchave não for encontrada. |
| DeleteSubKey(String) |
Exclui a subchave especificada. |
| DeleteSubKeyTree(String, Boolean) |
Exclui a subchave especificada e todas as subchaves filho recursivamente e especifica se uma exceção é gerada se a subchave não for encontrada. |
| DeleteSubKeyTree(String) |
Exclui uma subchave e qualquer subchave filho recursivamente. |
| DeleteValue(String, Boolean) |
Exclui o valor especificado dessa chave e especifica se uma exceção é gerada se o valor não for encontrado. |
| DeleteValue(String) |
Exclui o valor especificado dessa chave. |
| Dispose() |
Libera 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 a libera no disco se o conteúdo tiver sido modificado. |
| Flush() |
Grava todos os atributos da chave do Registro aberta especificada no Registro. |
| FromHandle(SafeRegistryHandle, RegistryView) |
Cria uma chave do Registro com base em um identificador especificado e uma configuração de exibição do Registro. |
| FromHandle(SafeRegistryHandle) |
Cria uma chave do Registro de um identificador especificado. |
| GetAccessControl() |
Retorna a segurança do controle de acesso para a chave atual do Registro. |
| GetAccessControl(AccessControlSections) |
Retorna as seções especificadas da segurança do controle de acesso para a chave atual do Registro. |
| GetHashCode() |
Serve como a função hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
| GetSubKeyNames() |
Recupera uma matriz de cadeias de caracteres que contém todos os nomes de subchave. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| GetValue(String, Object, RegistryValueOptions) |
Recupera o valor associado às opções de recuperação e nome especificados. Se o nome não for encontrado, retornará o valor padrão fornecido. |
| GetValue(String, Object) |
Recupera o valor associado ao nome especificado. Se o nome não for encontrado, retornará o valor padrão fornecido. |
| GetValue(String) |
Recupera o valor associado ao nome especificado. Retornará |
| GetValueKind(String) |
Recupera o tipo de dados do Registro do valor associado ao nome especificado. |
| GetValueNames() |
Recupera uma matriz de cadeias de caracteres que contém todos os nomes de valor associados a essa chave. |
| InitializeLifetimeService() |
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (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 no computador local com a exibição especificada. |
| OpenRemoteBaseKey(RegistryHive, String, RegistryView) |
Abre uma nova chave do Registro que representa a chave solicitada em um computador remoto com a exibição especificada. |
| OpenRemoteBaseKey(RegistryHive, String) |
Abre uma nova RegistryKey que representa a chave solicitada em um computador remoto. |
| OpenSubKey(String, Boolean) |
Recupera uma subchave especificada e especifica se o acesso de gravação deve ser aplicado à chave. |
| OpenSubKey(String, RegistryKeyPermissionCheck, RegistryRights) |
Recupera a subchave especificada para acesso de leitura ou leitura/gravação, solicitando os direitos de acesso especificados. |
| OpenSubKey(String, RegistryKeyPermissionCheck) |
Recupera a subchave especificada para acesso de leitura ou leitura/gravação. |
| OpenSubKey(String, RegistryRights) |
Recupera uma subchave com o nome e os direitos de acesso especificados. Disponível a partir do .NET Framework 4.6. |
| OpenSubKey(String) |
Recupera uma subchave como somente leitura. |
| SetAccessControl(RegistrySecurity) |
Aplica Windows segurança de controle de acesso a uma chave do Registro existente. |
| SetValue(String, Object, RegistryValueKind) |
Define o valor de um par nome/valor na chave do Registro usando o tipo de dados do Registro especificado. |
| SetValue(String, Object) |
Define o par nome/valor especificado. |
| ToString() |
Recupera uma representação de cadeia de caracteres dessa chave. |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IDisposable.Dispose() |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Executa um Close() na chave atual. |