segunda-feira, 16 de setembro de 2013

Bloqueando o windows pelo Delphi 7 (fonte Paulo)

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
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
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


Leia mais em: Bloqueando o Windows pelo Delphi http://www.devmedia.com.br/bloqueando-o-windows-pelo-delphi/1848#ixzz2f5eCvER6

0 Comentários:

Postar um comentário

Você pode utilizar:
<b>NEGRITO</b> | <em>ITÁLICO</em> | <a href="LINK">TEXTO DO LINK</a>