【VBS】ネットワークドライブに再接続できませんでしたなんて言わないよ絶対

2020年5月24日NAS,プログラムVBS,ネットワークドライブ

ネットワークドライブを張っていて、PC起動時に「ネットワークドライブに再接続できませんでした」のエラーをVBSで回避する。
画面の右下にピョッと出てくるアレ。

スポンサーリンク

回避策

%APPDATA%\Microsoft\Windows\Start Menu\Programs

上記のフォルダに、[適当なファイル名].vbsを作成。
(「NetworkDrive.vbs」とか)
下記コードをコピペして保存。

コード。

WScript.sleep 2000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive "Z:", "\\192.168.1.10\NAS"

でも、NASの電源を落としていたりすると、エラーが出てしまう。

エラー

NetworkDriveError

これも回避する

ということで、アレコレなんやかんや調べていじった結果。

コード

1.pingが通って
2.ドライブレターが使用されていなければ
3.ネットワークドライブの割り当て

という流れ。待機時間はお好みで。
※USRS_NAMEとUSER_PASSは、NASに接続するためのユーザー名とパスワード。
このファイルに書くよりも、資格情報(後述)に記憶したほうがよさそう。

' --------------------------------
' 定数
' --------------------------------
Const SERVER_IP = "192.168.1.10" ' NASのIPアドレス
Const DRIVE_LETTER = "Z:"        ' ネットワークドライブのドライブレター
Const SHARED_FOLDER = "NAS"      ' 共有フォルダ名
Const USER_NAME = "user"         ' アクセスするユーザー名
Const USER_PASS = "password"     ' ユーザーパスワード
Const WAIT_TIME = 2000           ' pingを打つまでの待機時間(ミリ秒)

' -------------------------------------
' ネットワークドライブの割り当て
' -------------------------------------
if fncPing(SERVER_IP) Then
  Dim connectFolder: connectFolder = "\\" + Server_IP + "\" + SHARED_FOLDER
  Set objFSO = CreateObject("Scripting.FileSystemObject")

' ドライブレターが使用されているか
  if Not objFSO.DriveExists(DRIVE_LETTER) Then
    Set objNetwork = CreateObject("WScript.Network")
    objNetWork.MapNetworkDrive DRIVE_LETTER, connectFolder, false, USER_NAME, USER_PASS
    Set objNetwork = Nothing
  Else
    MsgBox "「" + DRIVE_LETTER + "」" + " はすでに使用されています",,"エラー"
  End if
Else
  MsgBox "「" + SERVER_IP + "」" + "から応答がありません",,"エラー"
End if

' -------------------------------------
' pingが返ってくるか
' -------------------------------------
Function fncPing(host)
  WScript.sleep WAIT_TIME
  Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
  Set colItems = objWMI.ExecQuery("select * from Win32_PingStatus where address ='" & host & "'")

  For Each objItem In colItems
    If objItem.StatusCode = 0 Then
      fncPing = True
    Else
      fncPing = False
    End If
  Next

Set objItem = Nothing
Set colItems = Nothing
Set objWMI = Nothing
End Function

保存

あとは、起動時(ログオン時)に実行するために
%APPDATA%\Microsoft\Windows\Start Menu\Programs

上記のフォルダに、
vbsEdit

こんな感じでスタートアップにvbsファイルを保存すればOK。
エラー文が日本語のため、メモ帳以外のエディターで編集する場合は、Shift JISで保存する必要がある。

資格情報の保存

  1. コントロールパネル
  2. ユーザーアカウント
  3. 資格情報マネージャー
  4. Windows資格情報
  5. 「インターネットまたはネットワークのアドレス」にNASのIPアドレスを入力
  6. 「ユーザー名」にNASにアクセスする用のユーザー名を入力
  7. 「パスワード」にNASにアクセスする用のユーザー名を入力

して、OKをクリック。

参考はこのあたり:
http://happy44s.blogspot.com/2012/03/vbscriptping.html
http://vbs.crap.jp/content/net/net1.shtml

ninki_glog_ranking
ブログランキング・にほんブログ村へ

スポンサーリンク