我有一个有趣的情况。我坐在一台有共享文件夹的计算机上,比如“My_Folder”。所以,我可以使用地址“\ My_Box \ My_Folder”访问它。
现在,如果我在C#中编写一个小工具,我可以将“\ My_Box \ My_Folder”转换为“C:\ My_Folder”,这是它的物理位置。
有趣的是,我不知道如何在没有我的程序的情况下找到“My_Box \ My_Folder”的物理位置......这实际上是我朋友的问题之一。
因此,如果有人知道如何通过一些简单的基本Windows命令/操作(Winxp,2000,vista,7,...)从网络路径中找到本地路径,请告诉我。
谢谢, 皮特。
答案 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
,但这取决于你。