Получить локальный путь из сетевого пути - PullRequest
2 голосов
/ 23 ноября 2010

У меня забавная ситуация. Я сижу на компьютере, на котором есть общая папка, скажем, «My_Folder». Таким образом, я могу получить к нему доступ по адресу "\ My_Box \ My_Folder".

Теперь, если я напишу небольшой инструмент на C #, я могу преобразовать «\ My_Box \ My_Folder» в «C: \ My_Folder», который является его физическим местоположением.

Самое смешное, что я не знаю, как найти физически местоположение «My_Box \ My_Folder» без моей программы ... И это на самом деле одна из проблем моего друга.

Так что, если кто-нибудь знает, как найти локальный путь по сетевому пути с помощью простых простых команд / операций Windows (Winxp, 2000, Vista, 7, ...), пожалуйста, дайте мне знать.

Спасибо, Пит.

1 Ответ

2 голосов
/ 23 ноября 2010

Если вам нужен только инструмент командной строки, который предоставит эту информацию, вы можете просто использовать команду net share, встроенную в Windows.

Если вам нужно сделать это программно, вы можете использовать функцию NetShareGetInfo. В следующем примере показано, как использовать его для запроса пути для \\localhost\share в C ++.

#include <windows.h>
#include <lm.h>
#pragma comment (lib, "netapi32.lib")

#include <iostream>
using namespace std;

int main()
{
    BYTE * buffer = nullptr;

    auto error = NetShareGetInfo(nullptr, // local computer
                                 L"share",
                                 2, // level
                                 &buffer);

    if (ERROR_SUCCESS == error)
    {
        auto info = reinterpret_cast<SHARE_INFO_2 *>(buffer);

        wcout << info->shi2_path << endl;
    }

    if (buffer)
    {
        NetApiBufferFree(buffer);
    }
}

Я бы обернул буфер в классе и вызвал бы NetApiBufferFree от его деструктора, но это ваше дело.

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