Como Executar Um .reg (registro Do Win)
Started By NewMillenium, 12/10/2003, 19:32
9 replies to this topic
#1
Posted 12/10/2003, 19:32
Eu queria executar um arquivo .reg para modificação do registro do windows...
1- como executar o arquivo?
2- como fazer com que a mensagem "Tem certeza que deseja adicionar as informações contidas em <caminho do arquivo> ao Registro?"
vlw, galera! obrigado pela paciencia...
1- como executar o arquivo?
2- como fazer com que a mensagem "Tem certeza que deseja adicionar as informações contidas em <caminho do arquivo> ao Registro?"
vlw, galera! obrigado pela paciencia...
NewMillenium
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
#2
Posted 13/10/2003, 12:47
Com o seu .REG em mãos, é só executar uma função do delphi que "EXECUTA" o qualquer arquivo de acordo as configurações do PC do usuário, através do SHELL do Windows:
Atenção: Se as configurações do computador do usuário, definir que os arquivos .REG devem abrir no NOTEPAD por exemplo, o notepad vai abrir ao invés de mesclar o .REG no registro...
O melhor a se fazer é através do DELPHI, você por linhas de código adicionar e alterar chaves no registro. (sempre com muita cautela e fazendo backups do registro todo para tal)
A função mais completa desta função ShellExecute é assim:
Abraços!
ShellExecute(Handle, nil, PChar('C:\file.reg'), nil, nil,SW_SHOWNORMAL)Atenção: Se as configurações do computador do usuário, definir que os arquivos .REG devem abrir no NOTEPAD por exemplo, o notepad vai abrir ao invés de mesclar o .REG no registro...
O melhor a se fazer é através do DELPHI, você por linhas de código adicionar e alterar chaves no registro. (sempre com muita cautela e fazendo backups do registro todo para tal)
A função mais completa desta função ShellExecute é assim:
//
// Esta procedure requer a ShellApi na clausula Uses da unit.
//
// Declare a procedure na clausua ""private"" da unit e coloque-a apos a clausula
// implementation assim: procedure Tform1.ExecFile(F: String);
//
// use a procedure assim: ExecFile('c:\windows\Ladrilhos.bmp')
//
procedure ExecFile(F: String);
var
r: String;
begin
case ShellExecute(Handle, nil, PChar(F), nil, nil,SW_SHOWNORMAL) of
ERROR_FILE_NOT_FOUND: r := 'O arquivo especificado não foi encontrado ou não existe. (CD-ROM ERROR)';
ERROR_PATH_NOT_FOUND: r := 'O Caminho é inválido ou não existe. (CD-ROM ERROR)';
ERROR_BAD_FORMAT: r := 'O Aplicativo está corrompido ou não é um Aplicativo Win32 válido. (POWERPNT.EXE ERROR)';
SE_ERR_ACCESSDENIED: r := 'O sistema negou acesso a este arquivo por algum motivo desconhecido. (Bloqueio de Compartilhamento do sistema NTFS do WinNT)';
SE_ERR_ASSOCINCOMPLETE: r := 'Este arquivo tem uma associação inválida ou incompleta a ele. (Erro de Registro do Windows)';
SE_ERR_DDEBUSY: r := 'A transação DDE não pode ser efetuada por já haver outra Transação DDE em andamento. (Feche todos os arquivos PowerPoint, e execute novamente)';
SE_ERR_DDEFAIL: r := 'Não foi possível efetuar a transação DDE. (Reinstale o PowerPoint)';
SE_ERR_DDETIMEOUT: r := 'A transação DDE não pode ser efetuada porque o tempo requerido expirou. (Reinicie o Computador)';
SE_ERR_DLLNOTFOUND: r := 'Uma Biblioteca DLL necessária ào aplicativo associado não foi encontrada. (Reinstale o PowerPoint)';
SE_ERR_NOASSOC: r := 'Este arquivo não tem nenhum aplicativo associado à ele. (Reinstale o PowerPoint)';
SE_ERR_OOM: r := 'memória insuficiente para prosseguir com esta operação. (Feche um ou mais aplicativos e tente novamente)';
SE_ERR_SHARE: r := 'Ocorreu uma violação de compartilhamento ao efetuar esta operação.';
else
Exit;
end;
ShowMessage(r);
end;
Abraços!
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
#3
Posted 13/10/2003, 20:43
E aew kra! blz??? nussa kra, eh mto codigo pra minha cabeça... assim eu fico loko...
tipow.. o delphi acusou um erro no qual supostamente o "Handle" deveria ser uma variável... enfim... o certo eh q eu naum entendi nda e por isso queria t pedir c vc naum poderia postar um exemplo... tipow, c vc puder... por favor.. vlw pela resposta e paciencia...
NewMillenium
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
#4
Posted 14/10/2003, 12:42
Faz o download deste projeto em ZIP... talvez você consiga ve-lo...
Este foi feito em Delphi 6:
Este foi feito em Delphi 6:
Attached Files
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
#5
Posted 14/10/2003, 14:35
ahnnn! vlw kra... mais tipow, como eu faço pra q ele naum mostre akela janela de confirmação????
vlw, flws!
vlw, flws!
NewMillenium
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
#6
Posted 15/10/2003, 12:27
Daí você tem que fazer as alterações via código...
Mandei mais um anexo de um mini-projeto que cria e lê uma chave no registro... depois pegue ele e dê uma fuçada...
Depois experimente outras funções do código, mas sempre tomando cuidado com os testes... a função "DELETEKEY" é perigosa e deve ser usada somente com certeza do registro a ser apagado...
Faça um backup do seu registro e brinque!
OBS.: Sempre que for usar o registro, declare no uses a unit Registry.
Se tiver mais problemas, poste, podemos nos aprofundar mais no registro.
flw.
Mandei mais um anexo de um mini-projeto que cria e lê uma chave no registro... depois pegue ele e dê uma fuçada...
Depois experimente outras funções do código, mas sempre tomando cuidado com os testes... a função "DELETEKEY" é perigosa e deve ser usada somente com certeza do registro a ser apagado...
Faça um backup do seu registro e brinque!
OBS.: Sempre que for usar o registro, declare no uses a unit Registry.
Se tiver mais problemas, poste, podemos nos aprofundar mais no registro.
flw.
Attached Files
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
#7
Posted 17/10/2003, 12:53
ahn.. vlw kra... eu vo fuçar aki e ver o que eu consigo fazer, soh uma coisinha...como eu faço pra xegar na chave "[HKEY_CURRENT_USER\Control Panel\Desktop]", atraves da REG.ROOT ??
ah! e mais uma coisa... como eu faço pra editar uma chave? tipow, no caso, vc criou uma chave "Meu_Registro" e pos um valor nela... se eu usasse esse processo, eu sobreescreveria a chave... mas creio eu que seria mais rapido editá-la..
flw... vlw.
ah! e mais uma coisa... como eu faço pra editar uma chave? tipow, no caso, vc criou uma chave "Meu_Registro" e pos um valor nela... se eu usasse esse processo, eu sobreescreveria a chave... mas creio eu que seria mais rapido editá-la..
flw... vlw.
Edição feita por: NewMillenium, 17/10/2003, 16:28.
NewMillenium
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
#8
Posted 29/10/2003, 11:30
As chaves do registro tem estrutura semelhante a uma árvore de diretórios, portanto, chamadas do tipo Software\Microsoft\CurrentConfig são perfeitamente válidas.
Daí por diante, você poderá ler e gravar diversas chaves e valores no registro do Windows (recomenda-se fazer a operação em um bloco protegido, para evitar problemas durante o processamento).
Ao criar um objeto do tipo TRegistry, o root padrão é sempre o HKEY_CURRENT_USER.
Para alterá-lo, utilize:
Reg.RootKey := [root key desejado];
onde "Reg" é o nome da minha variável TRegistry; e:
onde [root key desejado] é o root que se deseja conectar, como por exemplo HKEY_LOCAL_MACHINE.
Depois de definir o seu ROOT, você da a função OpenKey(chave, PodeCriar);
Exemplo
PS.: Caso você escreva em um valor que já existe (WriteString) por exemplo, você estará EDITANDO este ok? Caso ele não exista, você cria uma nova entrada(valor).
----------------------------------
Para escrever valores DWORD não sei, mas aqui segue um passo-a-passo legal para ler e escrever dados binários no registro:
Vamos lá:
Coloque no uses: Registry
Coloque no Form:
- três edits;
- dois botões.
Logo abaixo da palavra implementation declare:
- Escreva o evento OnClick do Button1 conforme abaixo:
- Escreva o evento OnClick do Button2 conforme abaixo:
Observações:
Qualquer tipo de dado pode ser gravado e lido de forma binária no registro do Windows. Para isto você precisa saber o tamanho do dado. Para dados de tamanho fixo, use SizeOf(). Lembrete: não grave dados muito extensos no Registro do Windows (ex: imagens),
Abraços
Daí por diante, você poderá ler e gravar diversas chaves e valores no registro do Windows (recomenda-se fazer a operação em um bloco protegido, para evitar problemas durante o processamento).
Ao criar um objeto do tipo TRegistry, o root padrão é sempre o HKEY_CURRENT_USER.
Para alterá-lo, utilize:
Reg.RootKey := [root key desejado];
onde "Reg" é o nome da minha variável TRegistry; e:
onde [root key desejado] é o root que se deseja conectar, como por exemplo HKEY_LOCAL_MACHINE.
Depois de definir o seu ROOT, você da a função OpenKey(chave, PodeCriar);
Exemplo
procedure AbreChave;
var
Reg: TRegistry;
begin
Reg.Root := HKEY_CURRENT_USER;
Reg.OpenKey('Control Panel\Desktop',false);
// Defini "false", pois se a chave não existir, ele NÃO cria
{faz o que quiser aqui}
Reg.Free; // Libere da memória
end;PS.: Caso você escreva em um valor que já existe (WriteString) por exemplo, você estará EDITANDO este ok? Caso ele não exista, você cria uma nova entrada(valor).
----------------------------------
Para escrever valores DWORD não sei, mas aqui segue um passo-a-passo legal para ler e escrever dados binários no registro:
Vamos lá:
Coloque no uses: Registry
Coloque no Form:
- três edits;
- dois botões.
Logo abaixo da palavra implementation declare:
type
{ Declara um tipo registro }
TFicha = record
Codigo: integer;
Nome: string[40];
DataCadastro: TDateTime;
end; - Escreva o evento OnClick do Button1 conforme abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
Ficha: TFicha;
begin
{ Coloca alguns dados na variável Ficha }
Ficha.Codigo := StrToInt(Edit1.Text);
Ficha.Nome := Edit2.Text;
Ficha.DataCadastro := StrToDate(Edit3.Text);
Reg := TRegistry.Create;
try
{ Define a chave-raiz do registro }
Reg.RootKey := HKEY_CURRENT_USER;
{ Abre uma chave (path). Se não existir cria e abre. }
Reg.OpenKey('Cadastro\Pessoas\', true);
{ Grava os dados (o registro) }
Reg.WriteBinaryData('Dados', Ficha, SizeOf(Ficha));
finally
Reg.Free;
end;
end;- Escreva o evento OnClick do Button2 conforme abaixo:
procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
Ficha: TFicha;
begin
Reg := TRegistry.Create;
try
{ Define a chave-raiz do registro }
Reg.RootKey := HKEY_CURRENT_USER;
{ Se existir a chave (path)... }
if Reg.KeyExists('Cadastro\Pessoas') then
begin
{ Abre a chave (path) }
Reg.OpenKey('Cadastro\Pessoas', false);
{ Se existir o valor... }
if Reg.ValueExists('Dados') then
begin
{ Lê os dados }
Reg.ReadBinaryData('Dados', Ficha, SizeOf(Ficha));
Edit1.Text := IntToStr(Ficha.Codigo);
Edit2.Text := Ficha.Nome;
Edit3.Text := DateToStr(Ficha.DataCadastro);
end else
ShowMessage('Valor não existe no registro.')
end else
ShowMessage('Chave (path) não existe no registro.');
finally
Reg.Free;
end;
end;Observações:
Qualquer tipo de dado pode ser gravado e lido de forma binária no registro do Windows. Para isto você precisa saber o tamanho do dado. Para dados de tamanho fixo, use SizeOf(). Lembrete: não grave dados muito extensos no Registro do Windows (ex: imagens),
Abraços
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
#9
Posted 01/11/2003, 20:58
A soh! vlw kra... mais tipow, eu to fazenu tudo legalzinho e ele naum vai.. tipow eu naum ia alterar uma soh chave.. ia ser umas par... intaum, dae ele soh autera a primeira.... vc sab me dizer o q esta acontecenu???? flw kra.!
NewMillenium
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
Maior Interesse
Interação entre Flash e Action Script
Contato
ICQ - 172478715
E-mail - daniel902@zipmail.com.br
Atenção: Ao me adicionar no icq, identifique-se como membro do fórum, por favor. Obrigado.
#10
Posted 04/11/2003, 07:59
POSTA O CÓDIGO AQUI PARA VERMOS!
FLW
FLW
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)











