Moin Moin,
das genaue Problem kennen wir nicht nicht und sind noch am Suchen, bzw. am Nachstellen des Problems.
Wir bekommen von Outlook per Drag&Drop einen Dateianhang.
Vor Jahren hatten wir alles umbebaut, weil Outlook plötzlich Dateien als STREAM übergab, aber jetzt wieder als WM_DROPFILE mit Kopie im Temp.
Nun heißt es bei einem Rechner eines Kunden "Datei existiert nicht".
Ja klar, da fehlen am Ende zwei Buchstaben.
Scheinbar gibt GetLongPathName den Namen abgeschnitten zurück und tut dabei den auch den ShortName nicht durch den Langen ersetzen.
Und ja, natürlich rufe ich GetLongPath nicht mit MAX_PATH auf, oder sowas, sondern zwei mal, also einmal um die Länge zu bekommen und die String-Länge zu setzen und dann nochmal, um die Daten zu bekommen.
Witzig ist jetzt aber, dass Outlook uns den ShortPathName gibt und es fiel irgendwann auf, dass weiter vorne ein ShortName zufällig zwei Zeichen länger ist, als das Original.
Und
GetLongPathName macht aus dem M1D63~1.GRA auch nicht den LongName.
Code:
C:\Users\m.grawxyz\AppData\Local\Temp\abcdefg.hij
C:\Users\M1D63~1.GRA\AppData\Local\Temp\abcdefg.h
Ein erster Test, via CMD eine Datei mit soeinem Namen zu erzeugen und sich den Kurzname geben zu lassen, hatte nicht funktioniert.
Weder in Win10, noch in Win11 wurde überhaupt ein Kurzname erzeugt. (dieses Verhalten ist ja, seit 'ner ganzen Weile, standardmäßig im Windows deaktiviert)
In Google und Co. fand ich noch nichts,
aber kennt hier vielleicht jemand auch sowas ähnliches?
Auf NTFS macht %~s1 aktuell garnichts,
aber auf Samba (NAS) zeigt es, dass der Befehl per se funktioniert.
Zitat von
Share per PUSHD als Laufwerk, damit CMD funktioniert:
Z:\Neuer Ordner\m.gramxyzabcdef
Z:\N4BIQL~M\M9OYAG~B