Aktuellen Pfad des Temp Ordners ermitteln
Veröffentlicht am 24.07.2008 von Sebastian Krogolewski
Es gibt 2 verschiedene Möglichkeiten wie man den aktuellen Pfad des Temp Ordners ermitteln kann.
1. Abfragen der Tmp oder Temp Umgebungsvariable.
2. Über die Win API Funktion GetTempPathA bzw. GetTempPathW aus der Kernel32.Dll.
Möglichkeit 1:
1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 | Public Function GetTempPath(Optional ByVal AddBackslash As Boolean) As String Dim nTempDir As String On Error Resume Next 'aktuellen Wert für "temp" Umgebungsvariable ermitteln nTempDir = Environ$("temp") 'Wenn Leerstring dann Wert für "tmp" ermitteln If (Len(nTempDir) = 0) Then nTempDir = Environ$("tmp") End If If (Len(nTempDir)) Then GetTempPath = nTempDir If (AddBackslash) Then GetTempPath = nTempDir & "\" End If End If End Function |
Unter Windows gibt es 2 verschiedene Umgebungsvariablen in denen der Pfad des Temp Ordners hinterlegt sein kann. Sie heißen TEMP oder TMP, man kann leider auch nicht davon ausgehen das eine von denen Standardmäßig vorhanden ist. Es kann mal die eine oder die andere vorhanden sein, auch beide sind Möglich.
Möglichkeit 2:
Einbinden der API Funktion GetTempPathA bzw. GetTempPathW als GetTempPathAPI aus der Kernel32.dll.
1 2 | Private Declare Function GetTempPathAPI Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long |
GetTempPath erwartet 2 Parameter
nBufferLength: größe des reservierten Puffers.
lpBuffer: Reservierter Speicher in dem das Ergebnis geschrieben wird.
Rückgabewert:
Tatsächliche länge der Zeichenkette.
VB Funktion welche GetTempPathAPI aufruft und das Ergebnis als String zurückliefert:
1 2 3 4 56 7 8 9 1011 12 13 14 | Public Function GetTempPath(Optional ByVal AddBackslash As Boolean) As String Dim strPath As String Dim strLen As Long strPath = String$(256, 0)strLen = GetTempPathAPI(len(strPath), strPath) If (strLen > 0) Then If (AddBackslash) Then GetTempPath = Left$(strPath, strLen) Else GetTempPath = Left$(strPath, strLen - 1) End If End If End Function |
GetTempPath liefert die Pfadangabe in der Kurzfom C:\DOKUME~1\TESTUSER\LOKALE~1\TEMP zurück was nicht unbedingt Wünschenswert ist. Um die Pfadangabe in Langform zu erhalten kann mit der Funktion (hier Link auf Artikel) diesen dann umwandeln.






