Trabalhando com o registro no VB.NET


O registro do Windows é um banco de dados central que armazena as definições das configurações e outra informação exigida pelas aplicações. As duas únicas tarefas que você consegue fazer com o registro é ler e escrever nele.

Como fazer isto usando o VB.NET ?

Você já alguma vez abriu o registro ? Se não o fez , basta clicar no em Iniciar e a seguir em Executar e digitar regedit na janela Executar:

O botão OK abre o editor do registro. Na figura abaixo temos a hierarquia do registro. Ela possui cinco chaves principais sob o nó Meu Computador

Para poder trabalhar como registro a livraria .NET Framework fornece duas classes - Registy e RegistryKey.

Estas classes estão definidas no namespace - Microsoft.Win32 ; de forma que para que possamos usá-las devemos fazer referência a este namespace.

A classe Registry

Podemos definir as chaves do registro na seguinte ordem:

CurrentUser - Armazena informação sobre as preferências do usuário.
LocalMachine - Armazena a configuração da informação para a máquina local
ClassesRoot - Armazena informação sobre tipos e classes e suas propriedades.
Users - Armazena informação sobre a configuração padrão do usuário.
PerformanceData - Armazena informação de desempenho para os componentes de software.
CurrentConfig - Armazena informação sobre hardware.
DynData - Armazena dados dinâmicos.

A classe Registry contém membros que fornecem acesso as chaves do registro. Os membros correspondentes a cada um dos tipos das chaves acima citadas estão descritos abaixo:

ClassesRoot Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CLASSES_ROOT
CurrentConfig Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CURRENT_CONFIG
CurrentUser Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_CURRENT_USER
DynData Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_DYN_DATA
LocalMachine Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_LOCAL_MACHINE.
PerformanceData Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_PERFORMANCE_DATA
Users Retorna um tipo RegistryKey o qual fornece acesso a chave HKEY_USERS

Assim , por exemplo , se você deseja acessar a chave HKEY_LOCAL_MACHINE , você precisa chamar o membro Registry.LocalMachine o qual retorna um tipo RegistryKey

RegistryKey pRegKey = Registry.LocalMachine;

A classe RegistryKey

A classe RegistryKey contém membros para incluir , remover , substituir e ler dados do registro. Os métodos e propriedades mais comuns desta classe estão indicados abaixo:

Propriedades Descrição
Name Representa o nome da chave
SubKeyCount Representa o numero de subkeys a nivel da base para a chave atual
ValueCount Representa o numero de valores na chavekey.

Métodos

Método

Descrição

Close

Fecha a chave.

CreateSubKey

Cria uma nova subkey se ela não existir, de outro modo abre a subkey existente.

DeleteSubKey

Exclui a subkey definida

DeleteSubKeyTree

Exclui a subkey e qualquer filha.

DeleteValue

Exclui o valor definido de uma Chave. 

GetSubKeyNames

Retorna um vetor de strings que contém todos os nomes das subkeys.

GetValue

Retorna um valor especifico.

GetValueNames

Retorna um vetor de strings que contém todos os valores dos nomes associados com esta chave.

OpenSubKey

Abra uma subkey.

SetValue

Atribui o valor definido.

Incluindo uma chave e um valor no Registro

Vamos mostrar então , depois desta teoria toda como usar , os métodos para incluir , remover e atualizar chaves e seus valores.

Para começar vamos incluir uma chave com o nome de Macoratti como valor .NET Developer. O código para esta tarefa é o seguinte:

' Cria uma nova chave sob  HKEY_LOCAL_MACHINE\Software
Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software", True)
' Inclui mais uma sub chave
Dim newkey As RegistryKey = key.CreateSubKey("Macoratti")
' Atirbui o valor para a sub chave
newkey.SetValue("Macoratti", "NET Developer")

Usamos CreateSubKey para incluir uma nova chave no registro do Windows e invocamos o método SetValue para escrever o valor da chave.

Obtendo dados do Registro

O método GetValue retorna o valor de uma sub chave (subKey) na forma de um objeto. No exemplo a seguir estou lendo o valor do registro para retornar dados do processador da máquina. Para isto deve-se ler a subkey CenteralProcessor\0.

O código é o seguinte:

' Retorna dados de um registro
Dim pRegKey As RegistryKey = Registry.LocalMachine
pRegKey = pRegKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0")
Dim val As Object = pRegKey.GetValue("VendorIdentifier")
Console.WriteLine("O processador central para esta máquina é : " + val)

Excluindo dados do registro

O método DeleteValue pode ser usado para excluir um valor de uma subchave. DeleteSubKey exclui a subkey definida. Exemplos:

Dim delKey As RegistryKey = Registry.LocalMachine.OpenSubKey("Software", True)
delKey.DeleteSubKey("Macoratti")

O código completo das tarefas realizadas é o seguinte:

Imports System
Imports Microsoft.Win32
 
Module Module1
 
Sub Main()
 
' Cria uma nova chave sob  HKEY_LOCAL_MACHINE\Software
Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software", True)
' Inclui mais uma sub chave
Dim newkey As RegistryKey = key.CreateSubKey("Macoratti")
' Atirbui o valor para a sub chave
newkey.SetValue("Macoratti", "NET Developer")
 
' Retorna dados de um registro
Dim pRegKey As RegistryKey = Registry.LocalMachine
pRegKey = pRegKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0")
Dim val As Object = pRegKey.GetValue("VendorIdentifier")
Console.WriteLine("O processador central para esta máquina é : " + val)
 
'Exclui um valor de uma sub key
Dim
delKey As RegistryKey = Registry.LocalMachine.OpenSubKey("Software", True)
delKey.DeleteSubKey("Macoratti")
 
End Sub
End Module

E por enquanto é só isto. Aguarde artigo avançado sobre o assunto.

Tchau...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Referências:


José Carlos Macoratti