Merhaba Arkadaşlar, aşağıdaki kodla regeditte unistall alanındaki kayıtları getirerek bilgisayarda yüklü programların listesini almaya çalışıyorum ancak tüm programları getirmiyor, öncelikli olarak ofis versiyonlarını almam gerekiyor.
var
MyList: TStringList;
MyRegistry: TRegistry;
i: Integer;
Str: string;
begin
MyRegistry:=TRegistry.Create;
MyList:=TStringList.Create;
Memo1.Clear;
with MyRegistry do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall', False)=True then
GetKeyNames(MyList);
CloseKey;
mmo1.Assign(Mylist);
for i:=0 to MyList.Count-1 do
begin
RootKey:=HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+MyList, False);
Str:=ReadString('DisplayName');
if Str<>'' then
Memo1.Lines.Add(ReadString('DisplayName'));
CloseKey;
end;
end;
Regedit bazı alanlar okunmuyor
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Regedit bazı alanlar okunmuyor
Bu linkteki cevapta kullandığım şekilde bir sen de bir dener misin ...
Özet geçeyim : 64 bit sistemler ile 32 bit sistemler için erişim parametresi oluşturuyor.
Kullanımı da şöyle:
Özet geçeyim : 64 bit sistemler ile 32 bit sistemler için erişim parametresi oluşturuyor.
Kod: Tümünü seç
// 32 veya 64 Bit sistemlerde Registry kaydına farklı erişim şekli var.
function RegistryViewAccessFlag: LongWord;
type
TRegistryView = (rvDefault, rvRegistry64, rvRegistry32);
function IsWOW64: Boolean;
type
TIsWow64Process = function( Handle: THandle; var Res: BOOL ): BOOL; stdcall;
var
IsWow64Result : BOOL;
IsWow64Process : TIsWow64Process;
begin
IsWow64Process := GetProcAddress( GetModuleHandle('kernel32'), 'IsWow64Process' );
if Assigned(IsWow64Process) then
begin
if not IsWow64Process(GetCurrentProcess, IsWow64Result)
then raise Exception.Create('Sıkıntı var, anlayamadım...');
Result := IsWow64Result;
end else Result := False;
end;
begin
if IsWOW64 then Result := KEY_WOW64_64KEY
else Result := KEY_WOW64_32KEY;
end;
Kod: Tümünü seç
var
Reg : TRegistry;
begin
Reg := TRegistry.Create(KEY_READ or RegistryViewAccessFlag );
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
...
...
finally
Reg.Free;
end;
Re: Regedit bazı alanlar okunmuyor
daha önce yazmış olduğunuz right click özellikli ofis versiyonlarında geçerli olmuyor maalesef
ofis yüklü değil diyor.
bu verdiğinizle olacak gibi test edip bilgisini vereceğim. teşekkürler.

bu verdiğinizle olacak gibi test edip bilgisini vereceğim. teşekkürler.
Re: Regedit bazı alanlar okunmuyor
teşekkürler mrmarman. verdiğin son kod larla işimi hallettim.