Autor Beitrag
stiftmaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Mo 23.06.08 08:52 
Hallo,

für ein Programm muss ich prüfen, ob es vom Temp-Verzeichnis aus gestartet wird. Dadurch ermittel ich erst das Temp-Verzeichnis und dann das Application-Verzeichnis:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
TempDir = GetTempDir;
AppDir := ExtractFilePath(ParamStr(0));

function GetTempDir: string;
var
  Dir: PChar;
begin
  Result := '';

  // Temp-Verzeichnis ermitteln
  Dir := StrAlloc(MAX_PATH + 1);
  GetTempPath(MAX_PATH, Dir);

  Result := IncludeTrailingPathDelimiter(Dir);
end;


Dann prüfe ich, ob (TempDir <> AppDir) ist. Unter XP, 2000 funktioniert das auch. Unter Vista habe ich allerdings das Problem, dass die Werte für die Verzeichnisse unterschiedlich sind, obwohl die Verzeichnisse gleich sind (also die Applikation aus dem Temp-Verzeichnis gestartet wird).

TempDir = C:\Users\S4A74~1.MUE\AppData\Local\Temp\
AppDir = C:\Users\s.mueller\AppData\Local\Temp\

Daher stehe ich jetzt was auf dem Schlauch, wie ich das Problem unter Vista in den Griff kriege. Hat von euch da jemand eine Idee? Bin für jeden Tipp dankbar.

Stefan
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Mo 23.06.08 11:05 
Hallo,

du kannst die Pfade vor dem Vergleichen in eine einheitliche Form bringen.
Die folgenden Funktionen der Windows API sollten die Pfade jeweils in die lange oder kurze schreibweise konvertieren.

ausblenden Delphi-Quelltext
1:
2:
GetLongPathName
GetShortPathName
stiftmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Mo 23.06.08 12:12 
Hi,

danke für den Tipp. Hat 1a geklappt. Damit wär das Problem auch aus dem Raume.

Ich danke

Stefan