Array
(
)

Como faço pra criar 2 endereços diferentes de registros???

Duolon
   - 28 dez 2005

A pergunta é: Como faço pra criar 2 endereços diferentes de registro no mesmo programa???
Bom nesse código:

#Código

function TForm1.CriaRegistro(Remover: BOOL): string;
var
strChaveApp: String;
regAplicacao: TRegistry;
begin
regAplicacao := TRegistry.Create;
try
with regAplicacao do
begin
strChaveApp := ´arquivo´;

RootKey := HKEY_LOCAL_MACHINE;

if OpenKey(strCHAVE_INICIAR, True) then
begin
if Remover = true then
regaplicacao.DeleteValue(strChaveApp)
else
WriteString(strChaveApp, PASTA+´\pasta\arquivo.exe´);
end;

regAplicacao.CloseKey;
end;
finally
regAplicacao.Free;
end;
CriaRegistro := ´´;
end;


Isso fez com que toda vez que o windows for inializado o programa arquivo.exe se execulte automaticamente no diretório pasta, só que eu quero que gere 2 registros o 1º é esse mesmo, e o segundo em vez de ser aberto no diretório pasta gostaria de fosse aberto no diretório pasta2, mais tratase do mesmo arquivo.exe para ambos os registros...

Como que ficaria o código? oq eu acrecentaria nesse código acima para criação de 2 registros???


Eixox
   - 29 dez 2005

Nesse caso, você não ficaria com duas instâncias da mesma aplicação rodando?

Acredito que você poderia criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos.


Duolon
   - 29 dez 2005


Citação:
Nesse caso, você não ficaria com duas instâncias da mesma aplicação rodando?

Acredito que você poderia criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos.


Exatamente isso que eu quero fazer, criar um processo que verificaria a existência do primeiro arquivo e o executava. Caso o primeiro não existisse iria para o segundo. Tudo dependeria na verdade somente de uma única chave que rodaria o processo e não os arquivos

mais o problema é que eu não sei como fazer isso... (não manjo nada de delphi...)

Oq eu acrecentaria no código que eu coloquei acima para fazer isso?


Duolon
   - 29 dez 2005

Estava vendo, mais ñ sei se vai dá certo de de um único registro procurar em duas pastas diferentes... pq no msconfig na parte de inicializar cada arquivo inicializado aponta para um único endereço, axo q o mais correto seria colocar dois diferentes endereços tentei fazer isso mais ñ deu certo:

#Código

if OpenKey(strCHAVE_INICIAR, True) then 
begin
if Remover = true then
regaplicacao.DeleteValue(strChaveApp)
else
WriteString(strChaveApp, PASTA+´\pasta\arquivo.exe´);
WriteString(strChaveApp, PASTA+´\pasta2\arquivo.exe´);
end;


só foi criado a pasta\arquivo.exe na parte de iniciar do msconfig, a pasta2\arquivo.exe ñ :(

como faço pra criar 2 registros???


Eixox
   - 29 dez 2005

Vejo que o que o Duolon colocou realmente não irá funcionar, até porque estão sendo criadas duas chaves com o mesmo nome e uma sobrescreverá a outra - senão me engano.

Um detalhe que você terá que fazer é o seguinte:

Quando a primeira aplicação for executada, a segunda também deverá ser executada, só que durante a sua inicialização, você deverá verificar se o programa já está sendo executado - se sim ele simplesmente será fechado, se não ele ficará em execução - sinal que a primeira instância da sua aplicação foi descoberta e provevelmente a segunda também será.

Existem um caras que postaram aqui um lance de incorporar um executável dentro de outro e depois os subtraem. Tente fazer isso, assim poderá também extrair o arquivo para a pasta onde o primeiro arquivo estava armazenado.