Разрешить букву диска Windows для пути (сабст и сеть)
Интересно, существует ли универсальный способ разрешения пути с использованием буквы диска (например,X:\foo\bar.txt
) в эквивалентный UNC-путь, который может быть одним из следующих:
X:\foo\bar.txt
еслиX:
реальный диск (то есть жесткий диск, флешка и т. д.)\\server\share\foo\bar.txt
еслиX:
это сетевой диск, установленный на\\server\share
C:\xyz\foo\bar.txt
еслиX:
является результатомSUBST
отображение командX:
вC:\xyz
Я знаю, что есть частичные решения, которые будут:
Разрешить сетевой диск (см., Например,вопрос 556649 который опирается на)WNetGetUniversalName
РазрешитьSUBST
буква диска (см.QueryDosDevice
который работает как положено, но не возвращает UNC-пути для таких вещей, как локальные диски или сетевые диски).
Я упускаю какой-то простой способ реализации этого разрешения диска буквы в Win32? Или я действительно должен связываться с обоимиWNetGetUniversalName
а такжеQueryDosDevice
получить то, что мне нужно?