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
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)