Varrer Ler Todos os Regitros Windows
Pessoal, eu preciso localizar determinadas chaves no Registro do Windows, porém não tenho o endereço delas. Isso significa que vou Varrer todos as chaves existentes até encontrar os valores que preciso.
Para isso iniciei com uma função que achei noutro fórum. De início funciona, mas no recursivo seguinte não funciona.
Eu Insiro o nome do Root e consigo pegar as primeiras pastas da hierarquia de pastas. Então, a cada pasta que encontro eu uso a própria função recursivamente para ler o conteúdo da pasta. Assim deveria ir até descer ao ultimo nível de pastas.
Segue a função. Espero que possam me ajudar.
uses
Registry
procedure TForm3.GetRegistryList(const aRoot: HKEY; const aPath: string; const aStrings: TStrings);
var
vList: TStringList;
vIEntry: Integer;
vReg : TRegistry;
begin
vReg := TRegistry.Create;
vList := TStringList.Create;
try
vReg.RootKey := aRoot;
vReg.OpenKey(aPath, True);
vReg.GetKeyNames(vList);
for vIEntry := 0 to vList.Count-1 do begin
aStrings.Add(aPath + ''\'' + vList[vIEntry]);
GetRegistryList(aRoot, aPath + ''\'' + vList[vIEntry], aStrings);
end;
finally
FreeAndNil(vReg);
FreeAndNil(vList);
end;
end;
Para isso iniciei com uma função que achei noutro fórum. De início funciona, mas no recursivo seguinte não funciona.
Eu Insiro o nome do Root e consigo pegar as primeiras pastas da hierarquia de pastas. Então, a cada pasta que encontro eu uso a própria função recursivamente para ler o conteúdo da pasta. Assim deveria ir até descer ao ultimo nível de pastas.
Segue a função. Espero que possam me ajudar.
uses
Registry
procedure TForm3.GetRegistryList(const aRoot: HKEY; const aPath: string; const aStrings: TStrings);
var
vList: TStringList;
vIEntry: Integer;
vReg : TRegistry;
begin
vReg := TRegistry.Create;
vList := TStringList.Create;
try
vReg.RootKey := aRoot;
vReg.OpenKey(aPath, True);
vReg.GetKeyNames(vList);
for vIEntry := 0 to vList.Count-1 do begin
aStrings.Add(aPath + ''\'' + vList[vIEntry]);
GetRegistryList(aRoot, aPath + ''\'' + vList[vIEntry], aStrings);
end;
finally
FreeAndNil(vReg);
FreeAndNil(vList);
end;
end;
Aesmo
Curtidas 0
Respostas
Aesmo
03/03/2014
Ninguem sabe? =\
GOSTEI 0