aber das ist gar nicht so selbstverständlich, da diese gar nicht existieren

Um jetzt den Orginalpfad in der Sprache des Benutzers zu übersetzen, ist diese kleine Procedure nützlich (hoffe ich mal

Code: Alles auswählen
EnableExplicit
Procedure.s GetLocalDirName(Dir.s)
If Right(Dir, 1) <> "\" : Dir + "\" : EndIf
Protected KeyValue.s, expandedKey.s, ResDLL.s, ResValue.s, lpBuffer.s
Protected hDLL, i
Protected count = CountString(Dir, "\")
Protected tmpDir.s = StringField(Dir, 1, "\") + "\"
For i = 2 To count
KeyValue = Space(#MAX_PATH) : expandedKey = Space(#MAX_PATH) : lpBuffer = Space(#MAX_PATH)
tmpDir + StringField(Dir, i, "\") + "\"
If GetPrivateProfileString_(".ShellClassInfo", "LocalizedResourceName", 0, @KeyValue, #MAX_PATH, tmpDir + "desktop.ini")
If Left(KeyValue, 1) = "@" : KeyValue = Mid(KeyValue, 2) : EndIf
If ExpandEnvironmentStrings_(KeyValue, @expandedKey, #MAX_PATH)
ResDLL = StringField(expandedKey, 1, ",")
ResValue = StringField(expandedKey, 2, ",")
If Left(ResValue, 1) = "-" : ResValue = Mid(ResValue, 2) : EndIf
hDLL = LoadLibraryEx_(ResDLL, 0, #LOAD_LIBRARY_AS_DATAFILE)
If hDLL
If LoadString_(hDLL, Val(ResValue), @lpBuffer, #MAX_PATH)
Dir = ReplaceString(Dir, StringField(Dir, i, "\"), lpBuffer)
EndIf
FreeLibrary_(hDLL)
EndIf
EndIf
EndIf
Next
ProcedureReturn Dir
EndProcedure
Debug GetLocalDirName("c:\Program Files\")
Debug GetLocalDirName(GetHomeDirectory() + "Documents\")