На какие машины в сети указывают подключенные сетевые диски
От: Аноним  
Дата: 23.01.07 13:57
Оценка:
Всем привет! Все знают, что зашаренный каталог на машине в локальной сети можно подключить как сетевой диск. А вот как в программе получить настойщее имя файла на таком подключенном сетевом диске? Т.е. в виде \\machinename\sharecatalog\filename (вроде это называется Universal Naming Convention-UNC)?
Заранее спасибо!
Re: На какие машины в сети указывают подключенные сетевые ди
От: aux88  
Дата: 23.01.07 14:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет! Все знают, что зашаренный каталог на машине в локальной сети можно подключить как сетевой диск. А вот как в программе получить настойщее имя файла на таком подключенном сетевом диске? Т.е. в виде \\machinename\sharecatalog\filename (вроде это называется Universal Naming Convention-UNC)?

А>Заранее спасибо!

Не совсем понял. Нужно понять локальное имя файла? См. NetShareGetInfo и SHARE_INFO_502.
Re: На какие машины в сети указывают подключенные сетевые ди
От: Ice Dragon Россия  
Дата: 24.01.07 11:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет! Все знают, что зашаренный каталог на машине в локальной сети можно подключить как сетевой диск. А вот как в программе получить настойщее имя файла на таком подключенном сетевом диске? Т.е. в виде \\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

Код проверил, у меня работает.
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения. (Бенджамин Франклин)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.