从网络路径获取本地路径

发布于 2024-10-03 18:07:47 字数 333 浏览 4 评论 0原文

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

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

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

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

谢谢, 皮特.

I have a funny situation. I am sitting on a computer on which there is a shared folder, say, "My_Folder". So, I can access it using the address "\My_Box\My_Folder".

Now, if I write a small tool in C#, I can convert the "\My_Box\My_Folder" to "C:\My_Folder" which is its physically location.

The funny thing is that I don't know how to find the physically location of "My_Box\My_Folder" without my program ... And it's actually one of my friend's problem.

So if anyone knows how to find the local path from a network path with some simple basic Windows commands/operations (either Winxp, 2000, vista, 7, ...), please let me know.

Thanks,
Pete.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄居人 2024-10-10 18:07:47

如果您需要的只是一个能够提供此信息的命令行工具,那么您只需使用 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,但这取决于您。

If all you need is a command line tool that will provide this information then you can simply use the net share command that’s built into Windows.

If you need to do it programmatically you can use the NetShareGetInfo function. The following example shows how to use it to query the path for \\localhost\share in 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);
    }
}

I would wrap the buffer in a class and call NetApiBufferFree from its destructor but that’s up to you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文