DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ネットワーク上の共有フォルダ

環境/言語:[VB2008(.NET 3.5 + Win7/64bit)]
分類:[.NET]

Windowsのコンピュータ=> ネットワーク=>機器名で表示される
フォルダ名一覧を取得する方法を教えてください。
ネットワーク上の機器一覧までは以下で取得出来ています。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim de As New DirectoryEntry("WinNT://WorkGroup")
For Each d As DirectoryEntry In de.Children()
If d.SchemaClassName = "Computer" Then
Console.WriteLine("{0} , {1}", d.Name, d.Path)
End If
Next
'結果
'LANDISK-BUFFALO , WinNT://WorkGroup/LANDISK-BUFFALO
'MAY-PC , WinNT://WorkGroup/MAYOPEES-PC
End Sub

このNAS(LANDISK-BUFFALO)内の共有フォルダ名一覧を取得したいです。
よろしくご指導下さい。
■No29589に返信(masaさんの記事)
> Windowsのコンピュータ=> ネットワーク=>機器名で表示される
> フォルダ名一覧を取得する方法を教えてください。

  http://d.hatena.ne.jp/fezg00/20090326/1238067327

  64bitOSですか・・・
  WMIで取れませんかネ?!

  http://d.hatena.ne.jp/fezg00/20090327/1238151742

以上。参考まで
オショウさん、お返事ありがとうございます。

添付URLを参考にして、以下のように実験してみましたが接続で失敗します。
試したNASは職場のものでIODATA製でPasswordは設定されていません。
User名は設定する所がありません。OSはVista/32bit(VB2008)です。
ManagementScopeのコンストラクタ引数が間違っていると思うのですが
よく解りません。
どなたか、教えてください。

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim co As New System.Management.ConnectionOptions()
co.Username = String.Empty
co.Password = String.Empty
'DirectoryEntryで取得したPath==>WinNT://WorkGroup/LANDISK-9D30CC
Dim sc As New System.Management.ManagementScope("\\LANDISK-9D30CC\ROOT\CIMV2", co)
'接続 sc.Connect()
Dim oq As New System.Management.ObjectQuery("Select * From Win32_Share")
Dim mos As New System.Management.ManagementObjectSearcher(sc, oq)
For Each mo As System.Management.ManagementObject In mos.Get()
Console.WriteLine(mo("Name"))
Next
End Sub
> 添付URLを参考にして、以下のように実験してみましたが接続で失敗します。

  手元にNASが無いので、確認のしようもありませんが・・・

  私は、NASにFTPサーバー機能のあるものを用いて
  FTPにてファイルの送受信で行ってますので、特にそ
  ういう問題には抵触しませんでした。

  また機種等によっては、当然、設定上うまくいかない場
  合がありますので、汎用的なFTPを使った次第です。

※ \\LANDISK-9D30CC・・・の、『LANDISK-9D30CC』の部分
  を、IPアドレスに変更したらどうなりますか?
  要はNASの実際のIPアドレスを設定してみることに
  なるんですが・・・

以上。参考まで
実際のIPアドレスを設定してみましたが、ダメでした。
同じワークグループの他のPCに対しても試してみましたが結果はNG。
あと少しの所だと思うのですが、もう少し、試行錯誤してみます。

どなたかわかる方がおられましたら、引き続き、お願いします。
■No29594に返信(masaさんの記事)
> 添付URLを参考にして、以下のように実験してみましたが接続で失敗します。

WMI 案ではなく、もうひとつの NetShareEnum 案の方はどうでしたか?
魔界の仮面弁士さん、返信ありがとうございます。

NetShareEnumのURLも拝見しましたが、私には
ちょっと荷が重そうな感じでしたのでパスしました。
C言語もよく解らないので、VBに直すだけでも大変です。

ちょうど週末になるので、NetShareEnum案の方も
調査してみます。もし、どうしても解らなければ、
再度投稿しますのでよろしくご指導ください。
NetShareEnumにて、取得することができました。
どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板