2

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

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

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

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

谢谢,皮特。

4

1 回答 1

2

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

如果您需要以编程方式执行此操作,则可以使用该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从其析构函数中调用,但这取决于你。

于 2010-11-23T15:41:29.580 回答