problema ao manipular registro no windows 7 64

Delphi

20/07/2011

estou desevolvendo um aplicativo q vai funcionar como servidor de aplicação para os sistemas em rede , o problema que foi colocando uma opção para alterar o registro do windows para o programa auto-iniciar sozinho ... usei a seguinte função ...    
procedure TF_Inicial.RunOnStartup(sProgTitle, sCmdLine: string;  bRunOnce: boolean);
var
  MyReg : TRegistry;
begin
  try
    MyReg := TRegistry.Create;
    MyReg.RootKey := HKEY_LOCAL_MACHINE;
    MyReg.Openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
    MyReg.WriteString(sProgTitle, sCmdLine);
    MyReg.CloseKey;
  finally
    MyReg.Free;
  end;
end;   chamada da função :   RunOnStartup('ElisoftServ',Application.ExeName, True);   depois é retornado o seguite erro :   Failed to set data for 'ElisoftServ'   se executo como administrador , ele não mostra este erro , mas também não adiciona o registro.   alguém tem alguma ideia ?
Elixandre Américo

Elixandre Américo

Curtidas 0

Respostas

Elixandre Américo

Elixandre Américo

20/07/2011

Verifiquei que se pedir para abrir como administrador , realmente ele cria a chave só que não caminho do
registro q informo

SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN

ele cria em :

Wow6432Node\Microsoft\Windows\CurrentVersion\Run

mas na leitura ñ consigo puxar os valores

estou usando assim :

procedure TF_Inicial.RunOnStartup(sProgTitle, sCmdLine: string;  bRunOnce: boolean);
var
  MyReg : TRegistry;
begin
  try
    MyReg := TRegistry.Create;
    MyReg.RootKey := HKEY_LOCAL_MACHINE;
    MyReg.Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',False);
   //nesta parte nunca achar o valor ...
    if MyReg.ReadString(sProgTitle)='' then
    begin
      MyReg.WriteString(sProgTitle, sCmdLine);
    end;
    MyReg.CloseKey;
  finally
    MyReg.Free;
  end;
end;


já tentei trocar para

MyReg.Openkey('Wow6432Node\Microsoft\Windows\CurrentVersion\Run',False);

mas também não fuciona ....

MyReg.ReadString(sProgTitle) sempre traz "", mesmo tendo valor no registro ...

que no meu caso tem o seguinte valor:

D:\Desenvolvimento\Projetos\Sistema\Source\Server\Debug\Win32\ServerFin.exe




GOSTEI 0
Elixandre Américo

Elixandre Américo

20/07/2011

Verifiquei que se pedir para abrir como administrador , realmente ele cria a chave só que não caminho do
registro q informo

SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN

ele cria em :

Wow6432Node\Microsoft\Windows\CurrentVersion\Run

mas na leitura ñ consigo puxar os valores

estou usando assim :

procedure TF_Inicial.RunOnStartup(sProgTitle, sCmdLine: string;  bRunOnce: boolean);
var
  MyReg : TRegistry;
begin
  try
    MyReg := TRegistry.Create;
    MyReg.RootKey := HKEY_LOCAL_MACHINE;
    MyReg.Openkey('SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN',False);
   //nesta parte nunca achar o valor ...
    if MyReg.ReadString(sProgTitle)='' then
    begin
      MyReg.WriteString(sProgTitle, sCmdLine);
    end;
    MyReg.CloseKey;
  finally
    MyReg.Free;
  end;
end;


já tentei trocar para

MyReg.Openkey('Wow6432Node\Microsoft\Windows\CurrentVersion\Run',False);

mas também não fuciona ....

MyReg.ReadString(sProgTitle) sempre traz "", mesmo tendo valor no registro ...

que no meu caso tem o seguinte valor:

D:\Desenvolvimento\Projetos\Sistema\Source\Server\Debug\Win32\ServerFin.exe
GOSTEI 0
José

José

20/07/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR