Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como ler, listar, criar, alterar e apagar chaves do Registro do Windows (Regedit) pelo CLR (C#)

Visualizações: 1.086 views
Tempo de Leitura: 6 minutos

Olá pessoal,
Boa tarde!

No post de hoje, vou demonstrar como gerenciar (ler, listar, criar, alterar e apagar) chaves do registro do Windows (Windows Registry) através do banco de dados, utilizando o SQL CLR e a linguagem de programação C# (CSharp), que nos permite estender em muito, as capacidades e funcionalidades do banco de dados SQL Server.

Esse tipo de funcionalidade é muito útil quando você precisa consultar rapidamente alguma informação no registro do Windows de algum servidor ou realizar alguma alteração no registro sem precisar conectar no servidor, apenas executando uma Stored Procedure, ou mesmo para aplicar uma alteração de registro em várias máquinas ou servidores de forma automatizada.

Vale lembrar que eu já havia feito um post (SQL Server – Consultando informações da instância no Windows Registry utilizando sys.dm_server_registry e xp_instance_regread) onde era possível ler algumas informações do registro do Windows sem utilizar o CLR, mas relativos apenas a informações da instância do SQL Server e não a leitura geral de qualquer chave do registro e muito menos a manipulação dessas informações, o que me motivou a criar este novo post para essa necessidade.

Algumas Stored Procedures abaixo requerem o uso da classe Retorno, que utilizo para enviar mensagens de alerta e/ou erro do CLR para o banco de dados. O código-fonte dessa classe pode ser visualizado no post SQL Server – Como enviar avisos e mensagens de erro para o banco pelo CLR (C#)

Como ler e listar chaves de registros do Windows

Como ler e listar chaves de registros do Windows

sql-server-how-to-list-windows-registry-regedit-with-sql-clr

Para listar os registros do Windows, vou utilizar a classe RegistryRow, que encapsula vários métodos da biblioteca Microsoft.Win32.RegistryKey e a utilizo na função table-valued fncRegEdit_Listar, conforme exemplo acima, onde informo como parâmetros, o nome da máquina e a chave de registro que será lida.

RegEdit.cs

fncRegEdit_Listar.cs

Como criar pastas de registros do Windows

Como criar pastas de registros do Windows

sql-server-how-to-list-windows-registry-regedit-with-sql-clr-2

sql-server-how-to-list-windows-registry-regedit-with-sql-clr-3

Para criar pastas nos registros do Windows, eu utilizo a Stored Procedure stpRegEdit_Pasta_Criar, conforme no exemplo acima, que permite criar diretórios em uma chave de registro do Windows.

stpRegEdit_Pasta_Criar.cs

Como apagar pastas de registros do Windows

Como apagar pastas de registros do Windows

sql-server-how-to-list-windows-registry-regedit-with-sql-clr-4

Para apagar pastas nos registros do Windows, eu utilizo a Stored Procedure stpRegEdit_Pasta_Apagar, conforme no exemplo acima, que permite apagar diretórios do registro do Windows. A flag binária @Fl_Recursivo = 1, permite apagar as chaves e sub-diretórios recursivamente de um determinado diretório.

Caso a flag @Fl_Recursivo = 0, só será possível apagar diretórios que não possuem sem sub-diretórios e se você tentar, irá se deparar a com a mensagem de erro “System.ApplicationException: Erro : Registry key has subkeys and recursive removes are not supported by this method.”.

stpRegEdit_Pasta_Apagar.cs

Como criar/alterar chaves de registros do Windows

Como criar/alterar chaves de registros do Windows

Como criar chaves e valores no Registro do Windows:
sql-server-how-to-list-windows-registry-regedit-with-sql-clr-5

Como alterar chaves e valores no Registro do Windows:
sql-server-how-to-list-windows-registry-regedit-with-sql-clr-6

Para criar/alterar os registros do Windows, eu utilizo a Stored Procedure stpRegEdit_Chave_Criar, conforme exemplificado acima e o código-fonte está disponível logo abaixo:

stpRegEdit_Chave_Criar.cs

Como apagar chaves de registros do Windows

Como apagar chaves de registros do Windows

sql-server-how-to-list-windows-registry-regedit-with-sql-clr-7

Para apagar as chaves de registros do Windows, utilizo a Stored Procedure stpRegEdit_Chave_Apagar, no mesmos padrões das Stored Procedures acima.

stpRegEdit_Chave_Apagar.cs

Caso você não sabia o que é o CLR e gostaria de saber mais sobre o assunto, visite o meu post Introdução ao SQL CLR (Common Language Runtime) no SQL Server.

É isso aí, pessoal!
Até o próximo post.

sql server c# csharp access acessar listar list view visualizar read registro do windows registry regedit

sql server c# csharp access acessar listar list view visualizar read registro do windows registry regedit