3

おはようございます、

UNC パス (例: "\fors343a.ww123.somedomain.net\folder\1\") の DriveInfo インスタンスを取得する方法はありますか?

var driveInfo = new System.IO.DriveInfo(drive);

... 上記の UNC パスを使用すると、ArgumentException ("オブジェクトはルート ディレクトリ (\"C:\\") またはドライブ文字 (\"C\") である必要があります) がスローされます。

それに関する情報を取得するには、何を使用すればよいでしょうか。たとえば、特定のフォルダがローカル ドライブまたは UNC パスに存在するかどうかを確認するにはどうすればよいでしょうか。

4

3 に答える 3

4

DriveInfoコンストラクターの備考セクションには、次のように書かれています。

ドライブ名は、「a」から「z」までの大文字または小文字のいずれかである必要があります。このメソッドを使用して、nullNothingnullptra null参照(Visual BasicではNothing)であるドライブ名に関する情報を取得したり、UNC(\ server \ share)パスを使用したりすることはできません。

Windowsエクスプローラーでネットワークドライブをマッピングすることで、それを機能させることができました。つまり、「\ server \ share」をドライブZにマップしてから、DriveInfo("Z:\\");期待したものを取得しました。

残念ながら、C#からネットワークドライブをマッピングする簡単な方法はありません。外部コマンド(つまり、「net use z:\ server \ share」)を実行するか、WindowsWNetAddConnection2API関数を呼び出して実行する必要があります。どちらの方法でも、完了したらドライブマッピングを削除する必要があります。

于 2009-03-24T22:37:16.250 に答える