Допустим, есть \\share\lala , как мне программно узнать какой букве диска на сервере соответствует данная шара?
Ответ
Это можно сделать через WMI для которого в .NET есть обертка.
Вам понадобится добавить в проект ссылку на System.Management.DLL и указать в коде using System.Management;
Выведем все имеющиеся "шары" с указанием полного пути к локальной папке
var oManager = new ManagementClass("Win32_Share");
foreach(ManagementObject oShare in oManager.GetInstances())
{
var strShareName = oShare
.Properties
.Cast
strPath будет содержать полный путь к шаре, из которого достать букву диска уже совсем просто - например так:
var di = new DirectoryInfo(strSharePath);
Console.WriteLine(di.Root);
Добавив совсем немного кода, можно сделать поиск данных "шары" по ее сетевому имени.
Приведенный пример позволяет узнать пути к общим папкам на локальной машине, однако WMI позволяет также обращаться к удаленным машинам, при наличии соответствующих прав у пользователя и необходимых разрешениях на удаленной машине. Подробнее про удаленное подключение и безопасность WMI в документации на MSDN тут и тут
Идея взята с pinvoke.net, там вообще много интересного по использованию WinAPI под .NET
Комментариев нет:
Отправить комментарий