2010-11-23 12 views
2

私は面白い状況があります。私は "My_Folder"という共有フォルダがあるコンピュータに座っています。だから、私は "\ My_Box \ My_Folder"というアドレスを使ってアクセスすることができます。ネットワークパスからローカルパスを取得

ここで、C#で小さなツールを書くと、 "\ My_Box \ My_Folder"を物理的な場所である "C:\ My_Folder"に変換できます。

面白いことに、私のプログラムなしで「My_Box \ My_Folder」の物理的な場所を見つける方法がわからないということです。実際には私の友人の問題の1つです。

Windowsの基本的なコマンド/操作(Winxp、2000、Vista、7、...)を使ってネットワークパスからローカルパスを見つける方法を知っている人は、私に知らせてください。

ありがとう、 Pete。

答えて

2

この情報を提供するコマンドラインツールが必要な場合は、Windowsに組み込まれているコマンドを使用してください。

プログラムで行う必要がある場合は、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を呼び出すが、それはあなた次第ですでしょう。

関連する問題