Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Bloqueando o Windows pelo Delphi

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi Bloqueando o Windows pelo Delphi

    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

    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
    Last edited by .IndependentResearch.; 18-12-2009, 19:55.

  • Font Size
    #2
    valeu filho

    Comment


    • Font Size
      #3
      Postado Originalmente por kaykylopes Ver Post
      valeu filho
      precisar estamos aew

      Comment


      • Font Size
        #4
        Mesmo se esconder o botão desligar ainda daria para desligar pelo CMD mas nem todos sabem ^^


        Muito bom isso, bem perigoso tambuém xD

        Comment


        • Font Size
          #5
          Poxa legal.

          Bom para usa em empresa com usuários de nível médio de conhecimento

          Parabéns ;D

          Comment

          X
          Working...
          X