problema ao manipular registro no windows 7 64
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 ?
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
Curtidas 0
Respostas
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
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
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
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é
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