2017-06-16 3 views
0

ユーザーがファイルやデータをNASに移動したときに問題が発生しました。これは多くの問題を引き起こす。ネットワークディスクユーザーがファイルを移動し、データがNASになっているかどうかを検出したいと思います。私はこれをC#プログラムからプログラムで実行したいと考えています。私はこの動きが問題を引き起こす可能性があることを彼らに警告したい。これは可能ですか?私は、ネットワークドライブがNASかどうかをC#/ .Netから判断する方法は見つけられませんでしたが、どちらも実行できないと言う人はいませんでした。 ネットワークドライブがNASであるかどうかをプログラムで判断する方法はありますか?ネットワークディスクがNAS(ネットワーク接続ストレージ)であるかどうかを検出できますか?


私は私の質問を改訂しました。 しかし、私はこの問題を教えてくれた人々と議論してきました。ネットワークディスクがNASであるという事実が問題であるとは信じていません。あなたのコメントのおかげで、私はいくつかの質問をしました。そして、私たちはさまざまなことについて話していました。この問題は、使用されるネットワークストレージの種類に関係なく、おそらく同じになります。 しかし、好奇心の念から、ネットワークディスクがプログラム上でNASであるかどうかを知ることは可能でしょうか?

+2

これはXYの問題のようです。なぜあなたはNASを特に探していますか? SANも同様ですか?または任意のSMB対応ストレージですか?外部ストレージはどうですか?実際の問題は何ですか? – CodeCaster

+1

選択した宛先がネットワークドライブまたはローカルディスク上にあることを検出したいのですか?その場合:https://stackoverflow.com/questions/4396634/how-can-i-determine-if-a-given-drive-letter-is-a-local-mapped-usb-drive – RvdK

答えて

2

あなたはこれらの3つを結びつける必要があります。

How can I determine if a string is a local folder string or a network string?Get the drive letter from a path string or FileInfoHow can I determine if a given drive letter is a local/mapped/usb drive?

ので:

string path = "\\some-unc-path\file.txt"; // or: @"H:\file2.txt" for mapped network drives 

if (new Uri(path).IsUnc) 
{ 
    // network 
} 
else 
{ 
    var fileInfo = new FileInfo(path); 
    var driveLetter = Path.GetPathRoot(fileInfo.FullName); 
    var driveInfo = new DriveInfo(driveLetter); 
    if (driveInfo.DriveType == DriveType.Network) 
    { 
     // network 
    } 
} 

ただ好奇心から、それを伝えることが可能であろうネットワークディスクがプログラム上NASの場合

いいえ、それは抽象化の奇跡です。あなたはSMBをデバイスに話し、SMBを返信します。 SMBを話すことができるデバイスは、WindowsまたはLinuxサーバー、デスクトップ、NAS、SAN、ホールド、ルータやテレビでさえもSMBと話すことができるため、USBドライブを接続して公開することができますあなたの家のネットワークで。

は、NASがSMB以外のサービス(Web管理インターフェイスなど)をホストしている既知のポートをプロービングしてNASを検出することができますが、どのような問題が解決するのか分かりません。

関連する問題