Muitas vezes precisamos restringir o acesso à algumas funções do Windows, como painel de controle, ou até mesmo de desligar o Windows. Tudo isso pode ser feito através de configurações no registro do Windows.
O Registro do Windows nada mais é do que um banco de dados que armazena informação sobre suas configurações. Esse banco de dados pode ser utilizado por qualquer aplicação, por exemplo você pode utilizar o registro do windows para armazenar a string de conexão de um banco de dados ou a última posição de uma determinada janela de seu aplicativo.
Acessando o Registro do Windows
O Delphi encapsulou toda a rotina de manipulação ao registro em uma classe chamada TRegistry que está localizada na Unit Registry. Veja na listagem 1 um exemplo de como utilizar a classe TRegistry.
Listagem 1. Exemplo do Help do Delphi sobre como usar TRegistry
A função acima permite que seja lido o valor contido na chave passada como parâmetro. Eu particularmente considero o uso do registro do windows um pouco perigoso porque o acesso a suas chaves é todo através de string, portanto se durante a execução passamos uma valor que não existe, não vamos obter o valor esperado ou podemos criar uma nova chave desnecessária.
Os segredos do registro
Digamos que você precise “esconder” o botão desligar do menu Iniciar. Para a maioria dos usuários comuns do windows isso já seria suficiente para “entrarem em pane”. Então vamos lá inicie uma nova aplicação e em seu formulário principal acrescente dois botões com os respectivos textos “Esconder botão Desligar” e “Trazer botão Desligar”, veja Figura 1.
Figura 1. Aplicação exemplo
Para fazer o que precisamos devemos incluir no registro do windows, exatamente na localização HKEY_Current_User/Software/Microsoft/Windows/CurrentVersion/Policies dentro da chave Explorer um novo valor “secreto” do tipo DWORD de nome NoClose. O valor NoClose poderá conter apenas um número que é 0 (falso, desligado) ou 1 (verdadeiro, ligado) .
Crie um método conforme a listagem 2, lembrando de acrescentar à clausula Uses a unit Registry.
Listagem 2. Método que irá alterar o registro
No botão “Esconder...” chame nosso método passando parâmetro True, e no botão “Trazer...” chame o método com parâmetro False. Execute a aplicação clique no primeiro botão, reinicie ou efetue um Logoff e veja o resultado.
Existem algumas outras chaves, na tabela 1 vemos algumas delas, lembrando que a chave raiz é HKEY_Current_User/Software/Microsoft/Windows/CurrentVersion/Policies
Subchave /Explorer
Valor
Descrição
NoRun
Desabilita o comando “Executar” do menu Iniciar
NoLogoff
Desabilita o “Logoff” da janela de segurança
NoClose
Desabilita o botão “Desligar” do menu Iniciar
NoDesktop
Desabilita os ícones da área de trabalho
NoFind
Desabilita o comando “Procurar” do menu Iniciar
NoControlPanel
Desabilita o Painel de Controle
Subchave /Network
NoFileSharingControl
Desabilita os controles de compartilhamento de arquivos
NoPrintSharing
Desabilita os controles de compartilhamento de impressoras
Tabela 1. Algumas chaves ocultas
Conclusão
Vimos que o registro do Windows é uma base de dados da qual podemos utilizar em nossas aplicações, além disso, ele esconde alguns “segredos” que, se conhecidos, podem otimizar e/ou restringir o uso do sistema operacional. Infelizmente esses segredos não são documentos, mas nada que um tempo de pesquisa no Google não resolva.
Creditos PAULO ROBERTO
O Registro do Windows nada mais é do que um banco de dados que armazena informação sobre suas configurações. Esse banco de dados pode ser utilizado por qualquer aplicação, por exemplo você pode utilizar o registro do windows para armazenar a string de conexão de um banco de dados ou a última posição de uma determinada janela de seu aplicativo.
Acessando o Registro do Windows
O Delphi encapsulou toda a rotina de manipulação ao registro em uma classe chamada TRegistry que está localizada na Unit Registry. Veja na listagem 1 um exemplo de como utilizar a classe TRegistry.
Listagem 1. Exemplo do Help do Delphi sobre como usar TRegistry
Código:
function GetRegistryValue(KeyName: string): string; var Registry: TRegistry; begin Registry := TRegistry.Create(KEY_READ); try Registry.RootKey = HKEY_LOCAL_MACHINE; Registry.OpenKey(KeyName, False); Result := Registry.ReadString('VALUE1'); finally Registry.Free; end; end;
A função acima permite que seja lido o valor contido na chave passada como parâmetro. Eu particularmente considero o uso do registro do windows um pouco perigoso porque o acesso a suas chaves é todo através de string, portanto se durante a execução passamos uma valor que não existe, não vamos obter o valor esperado ou podemos criar uma nova chave desnecessária.
Os segredos do registro
Digamos que você precise “esconder” o botão desligar do menu Iniciar. Para a maioria dos usuários comuns do windows isso já seria suficiente para “entrarem em pane”. Então vamos lá inicie uma nova aplicação e em seu formulário principal acrescente dois botões com os respectivos textos “Esconder botão Desligar” e “Trazer botão Desligar”, veja Figura 1.
Figura 1. Aplicação exemplo
Para fazer o que precisamos devemos incluir no registro do windows, exatamente na localização HKEY_Current_User/Software/Microsoft/Windows/CurrentVersion/Policies dentro da chave Explorer um novo valor “secreto” do tipo DWORD de nome NoClose. O valor NoClose poderá conter apenas um número que é 0 (falso, desligado) ou 1 (verdadeiro, ligado) .
Crie um método conforme a listagem 2, lembrando de acrescentar à clausula Uses a unit Registry.
Listagem 2. Método que irá alterar o registro
Código:
procedure TForm1.RemoverBotaoDesligar(SimNao: Boolean); const Registro = '\Software\Microsoft\Windows\CurrentVersion\Policies\'; Chave = 'Explorer\'; YesNo : array[False .. True] of Word = (0, 1); begin with TRegistry.Create do try RootKey:=HKEY_CURRENT_USER; if OpenKey(Registro + Chave, True) then WriteInteger('NoClose',YesNo[SimNao]); CloseKey; finally Free; end; end;
No botão “Esconder...” chame nosso método passando parâmetro True, e no botão “Trazer...” chame o método com parâmetro False. Execute a aplicação clique no primeiro botão, reinicie ou efetue um Logoff e veja o resultado.
Existem algumas outras chaves, na tabela 1 vemos algumas delas, lembrando que a chave raiz é HKEY_Current_User/Software/Microsoft/Windows/CurrentVersion/Policies
Subchave /Explorer
Valor
Descrição
NoRun
Desabilita o comando “Executar” do menu Iniciar
NoLogoff
Desabilita o “Logoff” da janela de segurança
NoClose
Desabilita o botão “Desligar” do menu Iniciar
NoDesktop
Desabilita os ícones da área de trabalho
NoFind
Desabilita o comando “Procurar” do menu Iniciar
NoControlPanel
Desabilita o Painel de Controle
Subchave /Network
NoFileSharingControl
Desabilita os controles de compartilhamento de arquivos
NoPrintSharing
Desabilita os controles de compartilhamento de impressoras
Tabela 1. Algumas chaves ocultas
Conclusão
Vimos que o registro do Windows é uma base de dados da qual podemos utilizar em nossas aplicações, além disso, ele esconde alguns “segredos” que, se conhecidos, podem otimizar e/ou restringir o uso do sistema operacional. Infelizmente esses segredos não são documentos, mas nada que um tempo de pesquisa no Google não resolva.
Creditos PAULO ROBERTO
Comment