#c_sharp #net #windows
Допустим, есть \\share\lala , как мне программно узнать какой букве диска на сервере соответствует данная шара?
Ответы
Ответ 1
Это можно сделать через 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() .First(x => x.Name == "Name") .Value.ToString(); var strSharePath = oShare .Properties .Cast () .First(x => x.Name == "Path") .Value.ToString(); if(strSharePath == "") strSharePath = "***UNDEFINED***"; Console.WriteLine(strShareName + " - " + strSharePath); } strPath будет содержать полный путь к шаре, из которого достать букву диска уже совсем просто - например так: var di = new DirectoryInfo(strSharePath); Console.WriteLine(di.Root); Добавив совсем немного кода, можно сделать поиск данных "шары" по ее сетевому имени. Приведенный пример позволяет узнать пути к общим папкам на локальной машине, однако WMI позволяет также обращаться к удаленным машинам, при наличии соответствующих прав у пользователя и необходимых разрешениях на удаленной машине. Подробнее про удаленное подключение и безопасность WMI в документации на MSDN тут и тут Идея взята с pinvoke.net, там вообще много интересного по использованию WinAPI под .NET
Комментариев нет:
Отправить комментарий