从网络路径获取本地路径

时间:2010-11-23 08:05:08

标签: windows operations

我有一个有趣的情况。我坐在一台有共享文件夹的计算机上,比如“My_Folder”。所以,我可以使用地址“\ My_Box \ My_Folder”访问它。

现在,如果我在C#中编写一个小工具,我可以将“\ My_Box \ My_Folder”转换为“C:\ My_Folder”,这是它的物理位置。

有趣的是,我不知道如何在没有我的程序的情况下找到“My_Box \ My_Folder”的物理位置......这实际上是我朋友的问题之一。

因此,如果有人知道如何通过一些简单的基本Windows命令/操作(Winxp,2000,vista,7,...)从网络路径中找到本地路径,请告诉我。

谢谢, 皮特。

1 个答案:

答案 0 :(得分:2)

如果您只需要一个提供此信息的命令行工具,那么您只需使用Windows内置的net share命令即可​​。

如果您需要以编程方式执行此操作,则可以使用NetShareGetInfo功能。以下示例显示如何使用它在C ++中查询\\localhost\share的路径。

#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,但这取决于你。