2010-11-23 128 views
2

我有一個有趣的情況。我坐在有共享文件夾的計算機上,比如說「My_Folder」。所以,我可以使用地址「\ My_Box \ My_Folder」來訪問它。現在,如果我在C#中編寫一個小工具,我可以將「\ My_Box \ My_Folder」轉換爲它的物理位置「C:\ My_Folder」。從網絡路徑獲取本地路徑

有趣的是,我不知道如何在沒有我的程序的情況下找到「My_Box \ My_Folder」的物理位置......而這實際上是我朋友的問題之一。

因此,如果有人知道如何通過一些簡單的Windows命令/操作(Winxp,2000,vista,7,...)從網絡路徑中找到本地路徑,請告訴我。

謝謝, 皮特。

回答

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但是這取決於你。