Woher bekomme ich die verschiedenen Systemeinstellungen wie Programmordner, Usernamen, ...?


Viele Einstellungen, wie Auflösung, Farbtiefe, Breite der Scrollbalken, etc. -d.h. alle Einstellungen, die man im "Eigenschaften"-Dialog des Desktops vornimmt- ermittelt man mit der API-Funktion "GetSystemMetrics".

Hier ein paar Funktionen für die folgenden Informationen:

function ProductID : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('ProductId')
  else
    Result := '0';
  Reg.Free;
end;

function OwnerName : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('RegisteredOwner')
  else
    Result := '';
  Reg.Free;
end;

function Username : string;
var UName : PChar;
    USize : integer;
begin
  USize := 100;
  UName := StrAlloc(USize);
  GetUserName(UName,USize);
  Result := string(UName);
  StrDispose(UName);
end;

function WindowsDirectory :string;
var WinDir : PChar;
begin
  WinDir := StrAlloc(Max_Path);
  GetWindowsDirectory(WinDir,Max_Path);
  Result := String(WinDir);
  if Result[length(Result)]<>'\' then
    Result := Result+'\';
end;

function SystemDirectory : string;
var SysDir : PChar;
begin
  SysDir := StrAlloc(Max_Path);
  GetSystemDirectory(SysDir,Max_Path);
  Result := String(SysDir);
  if Result[length(Result)]<><>'\' then
    Result := Result+'\';
end;

function ProgFilesDirectory : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey:=HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('ProgramFilesDir')+'\'
  else
    Result := '';
  Reg.Free;
end;

function CommonFilesDir : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey:=HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('CommonFilesDir')+'\'
  else
    Result := '';
  Reg.Free;
end;

function ConfigPath : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('ConfigPath')+'\'
  else
    Result := 'KeinName';
  Reg.Free;
end;

function DevicePath : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('DevicePath')+'\'
  else
    Result := 'KeinName';
  Reg.Free;
end;

function MediaPath : string;
var Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.Rootkey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false) then
    Result := Reg.ReadString('MediaPath')+'\'
  else
    Result := 'KeinName';
  Reg.Free;
end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:

Wie kann ich die aktuelle Zeitzone des Betriebssystems ermitteln?


Delphi FAQ