![]() |
Windows Server 2019 Temp Pfad
Guten Morgen,
ich habe folgende Funktion, die mir im Temppfad einen Unterordner erstellt. Dies klappt auch bei einem "normalen" Windows 10 prof. Nun habe ich das Programm auf einem Windows Server 2019 Standard gestartet und bekomme dann die Meldung angezeigt, dass der Pfad nicht erstellt werden kann. Dies könnte ich noch ändern, indem ich einen Pfad in C:\temp erstelle. Aber ich nutze ein externes Programm, welches auch in diesen Pfad schreiben will. Da dies nicht klappt, bricht das Programm ab. Habt ihr eine Idee?
Delphi-Quellcode:
fname := IncludeTrailingPathDelimiter(TPath.GetTempPath) + s;
if Not DirectoryExists(fname) then begin if not ForceDirectories(fname) then begin ShowMessage('lokaler Temp Pfad kann nicht angelegt werden!' + #10#13 + fname); exit; end; end |
AW: Windows Server 2019 Temp Pfad
Klingt komisch. Wie lautet der Pfad? Macht es einen Unterschied, ob das Programm als Administrator läuft? Läuft es überhaupt als ein Benutzer oder als Dienst? Funktioniert GetEnvironmentVariable('TEMP')?
Übrigens ist
Delphi-Quellcode:
doppelt. ForceDirectories schließt DirectoryExists ein.
if not DirectoryExists(fname) then begin
if not ForceDirectories(fname) then begin |
AW: Windows Server 2019 Temp Pfad
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich zum Test das so aufrufe, kommt ein leerer String raus.
Delphi-Quellcode:
ShowMessage(Format('TPath.GetTempPath = "%s"', [TPath.GetTempPath]));
Nutze ich
Delphi-Quellcode:
, dann kommt auf jeden Fall erst einmal ein String raus, der so aussieht, als wenn dieser OK wäre.
ShowMessage(Format('GetEnvironmentVariable("Temp") = "%s"', [GetEnvironmentVariable('Temp')]));
Als Admin kann ich das Programm nicht starten, da ich keine Adminrechte habe. Das Programm wird nur gestartet (liegt aber auf einem anderen Laufwerk, also nicht auf dem Server) und läuft nicht als Dienst. Ich habe von der Meldung des anderen Programms mal den Pfad per CMD erstellt und siehe da, es geht nun offenbar. Was mich aber verwundert, ist dass hinter c:\users\xxxx\temp\ noch eine "3" im Pfad steht, siehe Anhang. Dieses habe ich alles per Hand erstellt und nun kommen auch bei beiden Aufrufen oben der Pfad zum Temp Ordner. Was hat aber der Unterpfad "3" für eine Bewandnis? |
AW: Windows Server 2019 Temp Pfad
Ich hab auf der Kiste hier nur XE2 drauf, da ist TPath.GetTempPath das als Winapi.Windows.GetTempPath definiert. Zu dessen Verhalten siehe
![]() ![]() Wie es zu der 3 kommt, weiß ich nicht, da würd ich mal GetTempPath untersuchen, was das so tut. |
AW: Windows Server 2019 Temp Pfad
TPath.GetTempPath benutzt
![]() ![]() Leider ist die Fehlerbehandlung von TPath.GetTempPath eher grauenhaft, denn ein TempVerzeichnis muß es immer geben und wenn die Funktion dennoch mal nichts liefert, dann sollte da besser eine Fehlermeldung geworfen werden, anstatt grob fahrlässig einen Leerstring rauszugeben. Ach ja, ich empfehle dir eher ![]() #10#13 ist definitiv falsch. (#10, #13 oder #13#10 ... aber #10#13 sind zwei gemischte Zeilenumbrüche, also #10+#13) |
AW: Windows Server 2019 Temp Pfad
Zitat:
Ich werde das in neuen Projekten beachten und im aktuellen noch korrigieren. |
AW: Windows Server 2019 Temp Pfad
Hast Du mal den Admin des 2019er-Servers befragt, ob dieser aus Sicherheitsgründen den Temp-Ordner verändert hat (wegen der "3")? Manche Admins machen das, um Malware diesen einfachen Weg zu versperren, ihren Mist zu verbreiten bzw vorzubereiten... Ich vermute, dass deswegen auch Dein von Hand eingetragener Pfad funktioniert.
Hartmut |
AW: Windows Server 2019 Temp Pfad
Zitat:
Und mit GetTempPath gibt es da keine Probleme, denn dafür ist es ja eigentlich auch da, um diesen aktuellen Pfad zu bekommen. Wird bei jedem Neustart einer Session hochgezählt. |
AW: Windows Server 2019 Temp Pfad
Zitat:
|
AW: Windows Server 2019 Temp Pfad
Also unter Admin ist das oft c:\windows\temp
Du kannst wie du schon schreibst, dass TEMP umbiegen via Umgebungsvariablen. Musst halt schauen, dass die globalen Hinzeigen und ggf. nicht durch Benutzer TEMPs überschrieben werden. Jedes Konto hat sein eigenes TEMP. C:\temp klingt für mich nach Problemen mit Dateisystemrechten - unter umständen darf nur der Ersteller da reinschreiben. Aber da kannst du ja eine passende ACL drauf setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz