Frage
In einer Windows C-Anwendung möchte ich einen an eine Funktion übergebenen Parameter überprüfen, um sicherzustellen, dass der angegebene Pfad vorhanden ist. *
Wie überprüfen Sie, ob unter Windows in C ein Verzeichnis vorhanden ist?
* Ich verstehe, dass Sie in Rennbedingungen geraten können, in denen zwischen der Zeit, in der Sie die Existenz überprüfen, und der Zeit, in der Sie den Pfad verwenden, der nicht mehr existiert, aber ich kann damit umgehen.
Zusätzlicher Hintergrund
Wenn Sie explizit wissen, dass ein Verzeichnis vorhanden ist oder nicht, kann es schwierig werden, wenn Berechtigungen ins Spiel kommen. Es ist möglich, dass der Prozess beim Versuch, festzustellen, ob das Verzeichnis vorhanden ist, keine Berechtigungen zum Zugriff auf das Verzeichnis oder ein übergeordnetes Verzeichnis hat. Dies ist in Ordnung für meine Bedürfnisse . Wenn das Verzeichnis nicht vorhanden ist oder ich nicht darauf zugreifen kann, werden beide in meiner Anwendung als ungültiger Pfadfehler behandelt, sodass ich nicht unterscheiden muss. (Virtuelle) Bonuspunkte, wenn Ihre Lösung diese Unterscheidung vorsieht.
Jede Lösung in der C-Sprache, der C-Laufzeitbibliothek oder der Win32-API ist in Ordnung, aber im Idealfall möchte ich mich an häufig geladene Bibliotheken halten (z. B. Kernel32, User32 usw.) und Lösungen vermeiden, bei denen nicht standardmäßige Bibliotheken geladen werden (wie PathFileExists in Shlwapi.dll). Wieder (virtuelle) Bonuspunkte, wenn Ihre Lösung plattformübergreifend ist.