AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Server 2019 Temp Pfad

Ein Thema von zeras · begonnen am 8. Jan 2021 · letzter Beitrag vom 9. Jan 2021
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#1

Windows Server 2019 Temp Pfad

  Alt 8. Jan 2021, 07:46
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
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.018 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Windows Server 2019 Temp Pfad

  Alt 8. Jan 2021, 09:49
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:
if not DirectoryExists(fname) then begin
if not ForceDirectories(fname) then begin
doppelt. ForceDirectories schließt DirectoryExists ein.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows Server 2019 Temp Pfad

  Alt 8. Jan 2021, 10:37
Wenn ich zum Test das so aufrufe, kommt ein leerer String raus.
ShowMessage(Format('TPath.GetTempPath = "%s"', [TPath.GetTempPath]));
Nutze ich
ShowMessage(Format('GetEnvironmentVariable("Temp") = "%s"', [GetEnvironmentVariable('Temp')])); , dann kommt auf jeden Fall erst einmal ein String raus, der so aussieht, als wenn dieser OK wäre.

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?
Angehängte Grafiken
Dateityp: png Temppfad.png (2,7 KB, 27x aufgerufen)
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 8. Jan 2021 um 11:02 Uhr) Grund: Weitere Infos hinzugefügt
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.018 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Windows Server 2019 Temp Pfad

  Alt 8. Jan 2021, 22:10
Ich hab auf der Kiste hier nur XE2 drauf, da ist TPath.GetTempPath das als Winapi.Windows.GetTempPath definiert. Zu dessen Verhalten siehe hier. Möglicherweise ist die TMP-Variable falsch definiert? Das erklärt aber nicht, warum es nach Anlegen des Pfades geht. In Server 2019 gibt es wohl einen Bug mit dem Temp-Pfad, aber da GetTempPath keine Prüfung durchführt, dürfte das egal sein.

Wie es zu der 3 kommt, weiß ich nicht, da würd ich mal GetTempPath untersuchen, was das so tut.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.242 Beiträge
 
Delphi 12 Athens
 
#5

AW: Windows Server 2019 Temp Pfad

  Alt 9. Jan 2021, 00:27
TPath.GetTempPath benutzt Bei Google suchenGetTempPath, gefolgt von einem Bei Google suchenGetLongPathName.

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 Delphi-Referenz durchsuchensLineBreak, wenn du die Semantik von Zeilenumbrüchen nicht verstehst.
#10#13 ist definitiv falsch. (#10, #13 oder #13#10 ... aber #10#13 sind zwei gemischte Zeilenumbrüche, also #10+#13)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#6

AW: Windows Server 2019 Temp Pfad

  Alt 9. Jan 2021, 07:56

Ach ja, ich empfehle dir eher Delphi-Referenz durchsuchensLineBreak, wenn du die Semantik von Zeilenumbrüchen nicht verstehst.
#10#13 ist definitiv falsch. (#10, #13 oder #13#10 ... aber #10#13 sind zwei gemischte Zeilenumbrüche, also #10+#13)
Danke für den Hinweis.
Ich werde das in neuen Projekten beachten und im aktuellen noch korrigieren.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz