Определите файловую систему сетевого пути в. NET - PullRequest
1 голос
/ 12 января 2020

Для одного из моих проектов я sh воспользуюсь преимуществом Альтернативных потоков данных , который является функцией файловой системы NTFS, о которой вы можете прочитать подробнее по данной ссылке. Поскольку эта функция уникальна для NTFS, мне нужно выполнить предварительную проверку, чтобы убедиться, что каталог, в котором я работаю, использует эту файловую систему.

Если каталог находится на локальном диске, я могу использовать System.IO.DriveInfo.DriveFormat для проверки файловой системы. Однако, если каталог является сетевым / UN C путем, таким как \\Computer\Folder\Subfolder, я не могу использовать класс DriveFormat.

Есть ли какой-нибудь способ найти базовую файловую систему для доля сети? Я нигде не смог найти ответ.

1 Ответ

1 голос
/ 09 февраля 2020

Если вы посмотрите на источник свойства DriveFormat класса DriveInfo, вы увидите, что он выполняет собственный вызов GetVolumeInformationA в kernel32.dll, чтобы получить фактический формат диска.

Вызов этой функции по сетевому пути UN C, например \\Computer\Folder\, дает желаемый результат (включая конечный sla sh и не включает подпапки). Проделать ту же схему с помощью dll import и правильной проверки ошибок в вашем собственном коде немного, но это возможно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...