Autor Beitrag
AScomp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Fr 08.01.16 20:52 
Hallo,

bin gerade etwas verblüfft, dass ich nach fast 30-minütiger Suche keine Funktion finden kann, mit der man die Systemvariable "TEMP" auflösen kann.

Zur Erklärung: Ich möchte den Temp-Ordner des Systems ermitteln (NICHT den des Benutzers, siehe Anhang). Standardmäßig liegt der unter "C:\Windows\Temp\", aber über die Umgebungsvariablen kann das jeder Benutzer anpassen.

Mit

ausblenden Delphi-Quelltext
1:
ExpandEnvironmentStrings(PChar('%temp%'), PChar(result), MAX_PATH);					


kann ich die Umgebungsvariable des Benutzers auslesen, aber eben NICHT die Systemvariable.

Hat da jemand eine Idee?

Danke und viele Grüße

Andy
Einloggen, um Attachments anzusehen!
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 09.01.16 00:21 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
function ExpandEnvStr(const szInput: string): string;
const MAXSIZE = 32768;
begin
  SetLength(Result,MAXSIZE);
  SetLength(Result,ExpandEnvironmentStrings(pchar(szInput),
  @Result[1],length(Result))-1);
end;

procedure TForm1.ButtonClick(Sender: TObject);
var s : String;
begin
with TRegistry.Create(KEY_READ) do
  try
    RootKey :=  HKEY_LOCAL_MACHINE;
    if OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment\', False) then
    begin
      if ValueExists('Temp'then
      begin
          s:=  ReadString('Temp');
          Memo1.Lines.Add(ExpandEnvStr(s));
      end;
    end;
  finally
    CloseKey;
    Free;
  end;
end;


Zuletzt bearbeitet von hathor am Sa 09.01.16 17:34, insgesamt 1-mal bearbeitet
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Sa 09.01.16 01:13 
Hallo,

danke dir - den Weg über die Registry hatte ich mir auch bereits überlegt, ging aber stark davon aus, dass es dafür eine API geben müsste.

In jedem Fall, ganz herzlichen Dank!

Gruß

Andy
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 09.01.16 17:35 
(KEY_READ) noch hinzugefügt, sonst braucht man Admin-Rechte...