Интересно, существует ли универсальный способ преобразования пути с использованием буквы диска (например, X:\foo\bar.txt
) в его эквивалентный путь UNC, который может быть одним из следующих:
X:\foo\bar.txt
, еслиX:
- настоящий диск (например, жесткий диск, USB-накопитель и т. Д.)\\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
, чтобы получить то, что мне нужно?