Всем привет! Все знают, что зашаренный каталог на машине в локальной сети можно подключить как сетевой диск. А вот как в программе получить настойщее имя файла на таком подключенном сетевом диске? Т.е. в виде \\machinename\sharecatalog\filename (вроде это называется Universal Naming Convention-UNC)?
Заранее спасибо!
Здравствуйте, Аноним, Вы писали:
А>Всем привет! Все знают, что зашаренный каталог на машине в локальной сети можно подключить как сетевой диск. А вот как в программе получить настойщее имя файла на таком подключенном сетевом диске? Т.е. в виде \\machinename\sharecatalog\filename (вроде это называется Universal Naming Convention-UNC)?
А>Заранее спасибо!
Могу предложить полностью managed способ:
using System;
using System.IO;
using System.Management;
internal class Program
{
static private void Main()
{
FileInfo file = new FileInfo( @"M:\Program Files\Internet Explorer\IEXPLORE.EXE" );
string driveLetter =
string.Format(
"Win32_LogicalDisk.DeviceID=\"{0}\"",
Path.GetPathRoot( file.FullName ).TrimEnd( '\\' ) );
ManagementObject driveInfo = new ManagementObject( driveLetter );
string uncPath = string.Format( "{0}\\{1}",
driveInfo[ "ProviderName" ].ToString(),
file.FullName.Substring( 3 ) );
Console.WriteLine( "Full UNC name of file: {0}", uncPath );
Console.ReadKey();
}
}
Output:
\\ComputerName\ShareName\Program Files\Internet Explorer\IEXPLORE.EXE
Код проверил, у меня работает.
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения. (Бенджамин Франклин)