Lotus Notes / Domino Sonstiges > Tipps und Tricks

Windows Temp-Verzeichnis in String setzen

(1/1)

TMC:
Auslöser war folgender Thread: http://www.atnotes.de/index.php?board=7;action=display;threadid=14595

Gerade für Attachment-Aktionen braucht man ja immer ein temporäres Verzeichnis. Viele Entwickler bedienen sich da c:\Temp etc., was meines Erachtens nicht sauber ist aus 3 Gründen:
a) Das Verzeichnis ist evtl. gar nicht vorhanden
b) Der User hat keine Schreibrechte
c) Das Windows-Temp-Verzeichnis ist nicht c:\Temp und wird so bei Rechner-Aufräumarbeiten nicht geleert

Daher sollte man meines Erachtens immer das bei Windows definierte Temp-Verzeichnis verwenden.

Notes schafft mit der Environ-Function die Möglichkeit, dieses Verzeichnis auszulesen. Auf manchen Systemen klappt dies aber u.U. nicht, daher habe ich im folgenden Code berücksichtigt, dass im Worst Case ein Temp-Verzeichnis im Notes-Datenverzeichnis angelegt wird (wo der User auch immer Schreibrechte hat / haben sollte).


--- Code: ---Sub Click(Source As Button)
   Dim session As New NotesSession
   
   Dim szNotesDataPath As String
   Dim szExistsPath As String  
   Dim szTempPath As String
   
   'Temp-Variable setzen
   szTempPath=Environ$("Temp")
   'Tmp-Variable setzen, weil Temp nicht vorhanden
   If szTempPath="" Then
      szTempPath=Environ$("Tmp")
   End If
   
   'Worst Case: Sowohl Temp als auch Tmp ist nicht verfügbar, daher
   'nehmen wir das Datenverzeichnis von Notes: Wenn da kein 'Temp'-Verzeichnis vorhanden, dann legen wir es an
   If szTempPath="" Then
      szNotesDataPath = session.GetEnvironmentString("Directory",True)
      szExistsPath = szNotesDataPath & "\Temp"
      If Dir$(szExistsPath,16) = "" Then
         Mkdir szNotesDataPath & "\Temp"
         szTempPath = szNotesDataPath & "\Temp"
       Else
   szTempPath = szNotesDataPath & "\Temp"
      End If
   End If
   
   Msgbox szTempPath
   
   
End Sub
--- Ende Code ---

Eine andere Vorgehensweise mancher Entwickler ist es, die Registry auszulesen, was aber m.E. bei unterschiedlichen Betreibssystemen zu Problemen führen kann.


Ich bin über Anregungen und Verbesserungsvorschläge dankbar :-)

Matthias

Semeaphoros:
Windows selber nimmt als Fallback das Verzeichnis "Temp" im Windows-Verzeichnis (welches standardmässig entweder "Windows" oder "Winnt" heisst. Lässt sich im Normalfall über die Environment Variable SystemRoot oder fast zuverlässiger über Windir auslesen)

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln