ネットワークドライブのUNCパス取得とか割り当てとか解除とか

7月も17日になってようやく7月最初のエントリって、前回のエントリが6月29日だから、いやはや、2週間以上放置してたのねん(;^ω^)

という訳で

本題。ググってたら、Wscript.NetworkオブジェクトのEnumNetworkDrivesメソッドで取得できる事がわかった。

ソース

On Error Resume Next

Dim objNW, colDrvs

Set objNW = CreateObject("Wscript.Network")
Set colDrvs = objNW.EnumNetworkDrives

For i = 0 to colDrvs.Count -1 Step 2
	Wscript.Echo colDrvs.Item(i) & "ドライブのUNCパスは " & colDrvs.Item(i + 1) & " です"
Next

Set colDrvs = Nothing
Set objNW = Nothing

ちょっと変な感じがするのが、ループの部分。Step 2でコレクションを1つ飛ばしでループさせてるのは、EnumNetworkDrivesメソッドが

  • ドライブレター
  • UNSパス

の順にニコイチのコレクションを返すから。

実行すると


な感じで返されます。ちなみに、ドライブレターが割り当てられてない場合は、当たり前だけど

の様に、ドライブレターんとこに何も表示されません。

ついでに

折角、Wscript.Networkオブジェクトを触ったので、ネットワークドライブの割り当てと解除も。

割り当て

Dim objNW

Set objNW = CreateObject("Wscript.Network")
objNW.MapNetworkDrive "Z:", "\\hogehoge\fugafuga"
Set objNW = Nothing

説明するまでもないですが、MapNetworkDriveメソッドに渡す最初の引数がドライブレター(コロン(:)付きで渡す)、2番目の引数がUNCパスですね。

解除

Dim objNW

Set objNW = CreateObject("Wscript.Network")
objNW.RemoveNetworkDrive "Z:", True
Set objNW = Nothing

RemoveNetworkDriveメソッドにドライブレターをコロン(:)付きで渡すだけ。