C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ネットワーク上のNASをドライブに割り当てるには?


(過去ログ 71 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■41185 / inTopicNo.1)  ネットワーク上のNASをドライブに割り当てるには?
  
□投稿者/ hs (140回)-(2009/09/14(Mon) 20:21:34)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっております。
以前「ネットワーク上の全PC名を取得するのは?」というタイトルで質問させていただきました。

内容は、http://bbs.wankuma.com/index.cgi?mode=al2&namber=38952&KLOG=67 です。

その時、若干話がそれてしまい結局ネットワーク上の全PC名を取得する方法がわからないまま終わらせいてしまいました。
それで先日、NASを導入したのですが、現在ネットワークに配置したNASを自動で空いているドライブに割り当てる機能を作りたいのですが、やはり
> 検索した結果 http://www.kit.co.jp/vbit/QAndA08.htm が一番有力だと思うのですが、
> 公開されているソースの使い方がわかりません。
このAPIはVisual Basic6.0(SP3) が対象という事で、VB2008にコピペしましたが、文法が違い検証するに出来ない状態です。

ただ今回は、全コンピューター名の列挙ではなく、NASの名前を検索・空いているドライブに割り当てるという事を実現したいです。

2008では、どのように記述すればよいのでしょうか?
APIというものを利用したことがなく、出来ればサンプルコードで理解していきたいのですが、よろしくお願いします。





引用返信 編集キー/
■41201 / inTopicNo.2)  Re[1]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ オショウ (326回)-(2009/09/15(Tue) 11:32:01)
No41185 (hs さん) に返信
> ただ今回は、全コンピューター名の列挙ではなく、NASの名前を検索・空いているドライブに割り当てるという事を実現したいです。

  ネットワーク上のリソースを検索してNASだけ・・・
  と言うことは、何等かの命名規約が無いとできないと思います。

  要は、PCなのかNASなのか判断できない・・・と言うことです。
  リソース名称に何等かの文字列が含まれていたらNASだと判断する。
  と言うことになろうかと。

  それより指定された共有リソースを自PCの指定されたドライブに
  マウント・アンマウントする。と言う仕様の方が現実的ですが・・・

  因みに、http://bbs.wankuma.com/index.cgi?mode=al2&namber=38952&KLOG=67
  の際のAPIは試されたのでしょうか?

  NASが入手できたのであれば、共有ドライブの接続・切断の機能を
  動作確認するのが先決かと・・・

以上。
引用返信 編集キー/
■41205 / inTopicNo.3)  Re[2]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ 魔界の仮面弁士 (1284回)-(2009/09/15(Tue) 11:55:20)
2009/09/15(Tue) 13:14:26 編集(投稿者)

No41201 (オショウ さん) に返信
>   因みに、http://bbs.wankuma.com/index.cgi?mode=al2&namber=38952&KLOG=67
>   の際のAPIは試されたのでしょうか?
試そうにも、
>> このAPIはVisual Basic6.0(SP3) が対象という事で、VB2008にコピペしましたが、文法が違い検証するに出来ない状態です。
という状態だったようですね。

こういうときは、API 名でコード検索してみると良いかと思います。
http://www.google.com/codesearch?as_q=WNetEnumResource&hl=ja&as_lang=basic
http://www.google.com/codesearch?as_q=WNetAddConnection2&hl=ja&as_lang=basic
引用返信 編集キー/
■41206 / inTopicNo.4)  Re[3]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ hs (142回)-(2009/09/15(Tue) 12:18:13)
みなさんありがとうございます。

No41205 (オショウ さん) に返信
> NASが入手できたのであれば、共有ドライブの接続・切断の機能を
> 動作確認するのが先決かと・・・

NASは、I-O DATA社のLANDISKというものです。
で、接続・切断の動作確認は取れております。

No41205 (魔界の仮面弁士 さん) に返信
> こういうときは、API 名でコード検索してみると良いかと思います。

さっそく調べてみます。

引用返信 編集キー/
■41208 / inTopicNo.5)  Re[1]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ 魔界の仮面弁士 (1285回)-(2009/09/15(Tue) 13:25:11)
2009/09/15(Tue) 13:42:30 編集(投稿者)
No41185 (hs さん) に返信
> 結局ネットワーク上の全PC名を取得する方法がわからないまま終わらせいてしまいました。

API を使わない列挙方法を示しておきます。

'Imports System.DirectoryServices

Dim computers() As String

Dim domain As String = ワークグループまたはドメイン名
Using d As New DirectoryEntry("WinNT://" & domain)
    computers = (From c As DirectoryEntry In d.Children _
                Where c.SchemaClassName = "Computer" _
                Select c.Name).ToArray()
End Using


> Visual Basic6.0(SP3) が対象という事で、VB2008にコピペしましたが、文法が違い
そのままコピペするのではなく、[ツール]メニューの
[Visual Basic 6 コードのアップグレード]を使ってみてください。

# もっとも、これでアップグレードしたとしても、As Any 構文が原因で変換しきれないため
# VB6 の知識か API 自体への造詣が無いと、移植作業に若干苦労するかも知れませんが…。

引用返信 編集キー/
■41209 / inTopicNo.6)  Re[1]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ 魔界の仮面弁士 (1286回)-(2009/09/15(Tue) 14:00:10)
No41185 (hs さん) に返信
> NASの名前を検索・空いているドライブに割り当てるという事を実現したいです。

空いているドライブは、My.Computer.FileSystem.Drives または System.IO.DriveInfo.GetDrives() を
列挙すれば調べられるかと思います。WMI の Win32_LogicalDisk クラスという手もあるかな。


一方、ドライブの割り当てについては、先に挙がっている API を使う方法のほか、
WshNetwork オブジェクトを用いる方法などもあります。


'Imports System.Runtime.InteropServices

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

' http://msdn.microsoft.com/ja-jp/library/cc364409.aspx          
CallByName(wshNetwork, "MapNetworkDrive", CallType.Method, _
        "Z:", "\\servername\folderName", True, "userName", "password")

MsgBox("Z:に割り当てました。")

' http://msdn.microsoft.com/ja-jp/library/cc364419.aspx
CallByName(wshNetwork, "RemoveNetworkDrive", CallType.Method, _
        "Z:", True, True)

MsgBox("Z:を切断しました。")

Marshal.ReleaseComObject(wshNetwork)
wshNetwork = Nothing

引用返信 編集キー/
■41248 / inTopicNo.7)  Re[2]: ネットワーク上のNASをドライブに割り当てるには?
□投稿者/ hs (144回)-(2009/09/16(Wed) 16:00:57)
No41209 (魔界の仮面弁士 さん) に返信

いつもありがとうございます。無事にできました。
今後ともよろしくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -