Witam
Mam problem z działaniem GetRegStringValue z ComObj delphi w windows 7 tzn: działa odnośnie gałęzi rejestru HKEY_CURRENT_USER a nie działa jeśli czyta z HKEY_LOCAL_MACHINE. W windzie XP czyta wartości z obu gałęzi a na kompach z 7ką tylko z pierwszej. Posiadam delphi 7 personal jeśli ma to jakieś znaczenie. Poniżej podaję przykładowy kod wystarczy skopiować do unita i button na formę pod XPekiem poda wszystko a pod 7ką tylko pierwsze:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function PicPath(): string;
begin
Result:= GetRegStringValue('Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\', 'My Pictures', HKEY_CURRENT_USER)+'\';
//Bierze z rejestru ścieżkę do kat Moje obrazy działa w XP i win 7
end;
function GetRegOwner(): string;
begin
Result:= GetRegStringValue('SOFTWARE\\7-Zip\\Path', '', HKEY_LOCAL_MACHINE);
//Bierze z rejestru USERA windowsa działa w XP a nie działa w win7 choć taki klucz w win 7 się znajduje
end;
function GetOEM(): string;
begin
Result:= GetRegStringValue('SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\', 'ProductId', HKEY_LOCAL_MACHINE);
//Bierze z rejestru OEM number windowsa działa w XP a nie działa w win7 choć taki klucz w win 7 się znajduje
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(PicPath);
ShowMessage(GetRegOwner);
ShowMessage(GetOEM);
end;
end.