Ir para conteúdo
Fórum Script Brasil
  • 0

Componentes De Segurança


hencker

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0

Ai voce vai fazer assim:

grava no registro a data que o programa expira

e em toda abertura le a chave e faz uma checagem, se a data for maior que a de expiração o programa não funciona... ;)

Usando registro parte 1

{ Nesta matéria veremos como trabalhar com o registro do windows utilizando suas "Api's". Esta matéria possui algumas técnicas que tratam o registro do windows. Veja as dicas desta matéria: Como definir, que uma certa extensão de arquivo seja aberta pelo seu programa.

Como escrever e ler algum valor no registro do windows.

E o que escrever lá, para que sua aplicação seja inicializada junto com o windows.

Vejamos então a primeira dica:}

Uses
  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure TForm1.Button1Click(Sender: TObject);
Var
  Reg : TRegistry;
Begin
  Reg := TRegistry.Create;
  try
  with Reg do
  begin
  RootKey := HKEY_CLASSES_ROOT;
  OpenKey('\MeuPrograma', True);
  WriteString('', 'Arquivo do meu programa'); //Nome dado ao arquivo de sua aplicação. "Ex: Imagem Gif".
  CloseKey;
  OpenKey('MeuPrograma\DefaultIcon', True);
  // O primeiro parâmetro da linha de comando abaixo, é para escrever uma string vazia.
  // E o último parâmetro é para colocar o ícone da sua aplicação nos arquivos que serão abertos por ela.
  WriteString('', Application.ExeName + ',0');
  CloseKey;
  OpenKey('MeuPrograma\shell\open\command', True);
  WriteString('', Application.ExeName + ' "%1"');
  CloseKey;
  RootKey := HKEY_CLASSES_ROOT;
  OpenKey('\.ext', True); // Substitua o "ext" pela extensão que você deseja utilizar.
  WriteString('', 'MeuPrograma');
  CloseKey;
  end;
  finally
  Reg.CloseKey;
  Reg.Free;
end;
End;
{ Acredito que você tenha conseguido aplicar esta técnica que lhe pode ser bastante útil. Vamos então ver a segunda dica, com ela você aprenderá como ler ou escrever um valor no registro do windows:}
Uses
  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
  Reg: Tregistry;
begin
  Reg:=Tregistry.create;
  with Reg do
  begin
  rootkey:=HKEY_LOCAL_MACHINE;
  Openkey('Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List',false);
  writestring('File0', 'Natureza.htm');
  writestring('File1', 'Dia Claro.htm');
  closekey;
  end;
end;
{ No caso acima nós exemplificamos o que é escrever no registro, Neste exemplo nós trocamos de ordem os papeis de carta do Microsoft Outlook Explorer, embora você possa alterar qualquer registro já existente no "regedit". Se o que você que é incluir um registro e não editar, como nós fizemos, basta que no primeiro parâmetro da linha de comando "writestring", você coloque um nome para o seu registro, que não exista nesta pasta. Agora no código abaixo veremos como ler um valor de um registro qualquer:}
Uses
  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
  Reg: Tregistry;
  S: String;
begin
  Reg:=Tregistry.create;
  with Reg do
  begin
  rootkey:=HKEY_LOCAL_MACHINE;
  Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\',false);
  s:=readstring('version');
  closekey;
  end;
  edit.text:=s;
end;
{ Neste caso nós pegamos o registro "version", que significa a versão do windows, colocamos o seu valor na variável "s" e depois à "jogamos" num "edit" qualquer, apenas para que possamos visualizá-la. Agora que você já sabe como escrever no registro do windows, veremos o que precisamos escrever, para colocar a nossa aplicação para ser inicializada junto com o windows.}
Uses
  Windows, Messages .... Registry; // Não esqueça de adicionar a Unit Registry na sessão uses...

procedure button1.click(sender: Tobject);
var
  Reg: Tregistry;
begin
  Reg:=Tregistry.create;
  with Reg do
  begin
  rootkey:=HKEY_LOCAL_MACHINE;
  Openkey('\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',false);
  writestring('MeuPrograma', pchar(application.exename));
  closekey;
  end;
end;
Usando registro parte 2 {Os programas possuem cada vez mais opções. E você precisa gravar essas opções em algum lugar. A primeira coisa que lhe vem à cabeça é a criação de um arquivo INI, como no Windows 3.x. O Delphi possui o objeto TIniFile, que ajuda a ler e gravar dados nesse arquivo. A não ser que esteja usando o Windows 3.x, essa técnica deve ser repensada. No Windows 95 foi criado o Registro do Windows (Windows Registry), cuja finalidade é substituir os vários arquivos INI espalhados pelo Winchester e encapsulá-los em um local centralizado. Para você ter uma idéia de como ele funciona, dê uma olhada no Editor de Registro, que vem na instalação padrão do Windows (vá em Iniciar|Executar e digite RegEdit). O programa separa as opções de registro em "pastas", conhecidas aqui como "chaves". Essas chaves contém dados, chamados de "valores". Esses valores possuem um nome, um tipo e um valor específico. O Delphi encapsula o Registro do Windows através o objeto TRegistry. É através dessa classe que você irá acessar dados do registro. Para você entender melhor como funciona o objeto, vamos explicar primeiro como funciona o Registro do Windows: As principais chaves "raízes" são: HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER. Todas as informações sobre os programas ficam nessas chaves (as outras normalmente possuem informações sobre o Windows). O InstallShield, por exemplo, instala as informações sobre o nome de usuário e empresa do seu programa em HKEY_LOCAL_MACHINE\SOFTWARE\Nome da Sua Empresa\Nome Do Programa\Versão, com os valores Company e Name (Empresa e Nome do Usuário). Os programas, por sua vez, usam a chave HKEY_CURRENT_USER\Software para armazenar informações de seus programas. E é nessa chave que você deve inserir sua sub-chave e colocar lá as informações necessárias. Um pequeno exemplo de como utilizar o registro do Windows. Suponhamos que o programa necessite gravar a posição da janela, o seu tamanho e o diretório inicial dos diálogos Abrir e Salvar. Após a criação do objeto, devemos informar qual chave devemos utilizar, utilizando o método OpenKey (Chave, PodeCriar); onde Chave é o nome da sub-chave e PodeCriar é um valor booleano que permite (ou não) criar a chave caso a mesma não exista. Este exemplo mostra como funciona como podemos gravar dados do registro do Windows utilizando o Delphi 2 ou 3 }
procedure frmMain.GravarRegistro;
const
  Raiz : String = 'Software\Programa';
var
  Registro : TRegistry;
begin
// Chama o construtor do objeto
  Registro := TRegistry.Create;
{ Abre a chave (se o 2°. Parâmetro for True, ele cria a chave caso ela ainda não exista. }
  Registro.OpenKey (Raiz, True);
// Grava as informações do form
  Registro.WriteInteger ('Largura', Width);
  Registro.WriteInteger ('Altura', Height);
  Registro.WriteInteger ('Esquerda', Left);
  Registro.WriteInteger ('Topo', Top);
// Grava as informações das caixas Abrir e Salvar.
  Registro.WriteString ('Abrir Inicial', OpenDialog1.InitialDir);
  Registro.WriteString('Salvar Inicial', SaveDialog1.InitialDir);
// Fecha a chave e o objeto
  Registro.CloseKey;
  Registro.Free;
end;
{Após a criação do objeto, deve-se escolher uma chave para armazenas os valores. No caso, "Software\Programa", cuja chave raiz é HKEY_CURRENT_USER. Note que é para se separar as chaves das sub-chaves utiliza-se o caracter "\", tal como nos diretórios do DOS. Os métodos WriteInteger e WriteString são utilizados para gravar valores inteiros e caracteres, respectivamente. A sintaxe básica é:} Registro.WriteString (NomeDoValor, Conteúdo); {onde NomeDoValor é o nome que você vai dar ao valor dentro da chave, e Conteúdo é o conteúdo desse valor. Para se escrever dados de outros tipos, utilize as funções:}
WriteBool (NomeDoValor, Conteúdo); // Boolean
WriteBinaryData (NomeDoValor, Conteúdo); // Valor Binário
WriteCurrency (NomeDoValor, Conteúdo); // Currency
WriteDate (NomeDoValor, Conteúdo); // TDateTime
WriteDateTime (NomeDoValor, Conteúdo); // TDateTime
WriteFloat (NomeDoValor, Conteúdo); // Float (Real)
WriteInteger (NomeDoValor, Conteúdo); // Integer
WriteString (NomeDoValor, Conteúdo); // String
WriteTime (NomeDoValor, Conteúdo); // TDateTime
{ Este exemplo mostra como funciona como podemos ler dados do registro do Windows utilizando o Delphi 2 ou 3 }
procedure frmMain.LerRegistro;
const
  Raiz : String = ‘Software\Programa';
var
  Registro : TRegistry;
begin
// Chama o construtor do objeto
  Registro := TRegistry.Create;
  with Registro do
  begin
// Somente abre se a chave existir
    if OpenKey (Raiz, False) then
    begin
// Envia as informações ao form, vendo se os valores existem, primeiramente...
      if ValueExists ('Largura') then
        Width := ReadInteger ('Largura');
      if ValueExists ('Altura') then
        Height := ReadInteger ('Altura');
      if ValueExists ('Esquerda') then
        Left := ReadInteger ('Esquerda');
      if ValueExists ('Topo') then
        Top := ReadInteger ('Topo');
// Envia as informações para as caixas Abrir e Salvar.
      OpenDialog1.InitialDir := ReadString ('Abrir Inicial');
      SaveDialog1.InitialDir := ReadString ('Salvar Inicial');
// Fecha a chave e o objeto
      Registro.CloseKey;
    end;
  end;
  Registro.Free;
end;
{Sempre use CloseKey quando não for precisar do Registro. Isso permite que as opções sejam gravadas permanentemente, evitando que qualquer problema que o computador tenha afete seu programa. Os métodos ReadInteger e ReadString funcionam praticamente da mesma maneira que seus correspondentes de escrita. A diferença é que ao invés de passar o valor Conteúdo, eles retornam o valor armazenado. Os correspondentes dos outros tipos são:}
ReadBool (NomeDoValor) : Boolean;
ReadBinaryData ( NomeDoValor; var Buffer; TamBuffer : Integer): Integer;
ReadCurrency (NomeDoValor) : Currency;
ReadDate (NomeDoValor) : TDateTime;
ReadDateTime (NomeDoValor) : TDateTime;
ReadFloat (NomeDoValor) : Double;
ReadInteger (NomeDoValor) : Integer;
ReadString (NomeDoValor) : String;
ReadTime (NomeDoValor) : TdateTime

Adiconada dia: 24/06/03 às 13:47:48, por: Felipe Monteiro

Editado por Micheus
Incluída tag's CODE para melhorar a visualização, bem como identado o código. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...