人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualBasic2005Proで勉強中の者です。ネットワークフォルダ"\\Server\Folder1\"が存在するかどうかを調べるには、どのようなコードを記述すればよいでしょうか?

●質問者: crashtruck
●カテゴリ:コンピュータ
✍キーワード:コード ネットワーク フォルダ 勉強 存在
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KirakiraHikaru
●100ポイント

下記のコードで指定フォルダが存在するかチェックできます。

ネットワークフォルダの場合、多少時間がかかります。

 Dim dirName As String
 dirName = "\\Server\Folder1\"

 '指定フォルダ存在チェック
 If System.IO.Directory.Exists(dirName) Then
 MessageBox.Show(dirName & "は存在します。")
 Else
 MessageBox.Show(dirName & "は存在しません。")
 End If
◎質問者からの返答

ありがとうございます。しかし、何度トライしても存在しないという結果になってしまいます。「マイ ネットワーク」には表示されているのですが…。


2 ● KirakiraHikaru
●100ポイント ベストアンサー

"\\Server\Folder1\"

の形でアクセスする場合、Windowsのログオンユーザに依存します。

エクスプローラ等の場合は、ログオンユーザでアクセスできなかった場合は、

ユーザ・パスワードを入力するダイアログが表示されます。

・ログオンユーザが共有ディレクトリのユーザとして許可されている。

・ログオンユーザ+パスワードがアクセス先のユーザと同じである。

・エクスプローラ等でアクセス先の認証が完了している。

以上の条件のいずれかが満たされている場合に、\\?でアクセスできます。

ですので、Windowsによる認証ができていない状態だと、

先の回答のコードではディレクトリを認識できません。


解決策としては、

アクセス先の共有ディレクトリの許可するユーザにログオンユーザを登録する。

もしくは、

ネットワークドライブに共有ディレクトリを指定して、

O:\で"\\Server\Folder1\"にアクセスできるように設定しておく。

のが簡単だと思います。


あまりオススメできないのですが、

下記のコードで一応、ユーザ・パスを指定して共有ディレクトリにアクセスできます。

VBScriptでWMIをいじっていたときのコードを流用しているので、

あまり信頼性がありません。

(O:は使用されていないドライブ名とする)

 Dim WshNetwork As Object = CreateObject("WScript.Network")

 Try
 WshNetwork.MapNetworkDrive("O:", "\\Server\Folder1\", , "User", "Password")
 Catch ex As Exception
 MessageBox.Show("接続エラー")
 Return
 End Try
 '指定フォルダ存在チェック
 If System.IO.Directory.Exists("O:\") Then
 MessageBox.Show("存在します。")
 Else
 MessageBox.Show("存在しません。")
 End If

 Try
 WshNetwork.RemoveNetworkDrive("O:")
 Catch ex As Exception
 MessageBox.Show("切断エラー")
 Return
 End Try


私も知識不足なので、もしかしたら、

.NET FrameworkやWin32APIで上記と同等のことが

できるかもしれないです。

◎質問者からの返答

ありがとうございます。申し上げにくいのですが、何と、フォルダ名を間違って記述しておりました…。どうぞ今後とも阿呆にお付き合いください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ