PC起動時ネットワークドライブに接続できない(追記あり)
私のところでは、NASに共有データを保存したり、大事なデータを日々バックアップしています。
そして、そのNASに「ネットワークドライブ:例として(Z)」を割り当てて使用しています。
PCのOSがWindows7になってからしばらくはそうでもなかったのに、ここ最近はPC起動時に、「ネットワークドライブに再接続できませんでした」というメッセージが頻繁に出るようになりました。
そして、デスクトップのネットワークドライブアイコンには「×」印がついています。
ただし、その「×」印がついているアイコンをクリックすれば、ちゃんとNASに接続はできるのです。
ですから、多少気持ち悪いのですが、実用的には問題なかったので、そのまま使用していました。
ところが、先日お客様のところへWindowsXPからのリプレイスでWindows7PCを納品し、NASにネットワークドライブを割り当てた途端、同様の症状に悩ませられることになりました。
お客様:「WindowsXPの時はこんなことなかったのに・・・」
やむなく原因と対策をネット検索していると、解決策がありました。
いずたまラボ さんのネットワークドライブの悩み − 解決編 という記事を参考に、対策を施すと見事解決しました。
この記事にも書かれているように、
「起動プロセス中にネットワーク上のサーバーの認識をする前に共有フォルダを探しに行ってしまい、「ネットワークドライブに再接続できませんでした」というエラーメッセージが起動のたびに出てしまう」というのが原因のようです。
その方法とは・・・
いずたまラボ さんのネットワークドライブの悩み − 解決編にも書かれているように、
−−−−−−−−(以下は記事の転記です)−−−−−−−−−−−−−−−−−−−
Windowsの設定で「ログオン時に再接続」にチェックを付けず、WSH(Windows Script Host)という、ごく簡単なプログラムを書いておき、それをスタートアップで実行するという手段です。WSHはテキストでコマンドを法則に則って記述し、拡張子をvbsにして保存するだけで実行ファイルとなるものです。今回やりたいことは最初に待ち時間を置き、そのあとで3つの共有フォルダをそれぞれネットワークドライブとすることです。それをメモ帳などのテキストエディタで書きます。
- 待ち時間を入れる
WScript.sleep [時間(ミリ秒)]- ネットワークオブジェクトの作成
Set objNetwork = CreateObject(“WScript.Network”)- ネットワークドライブの接続
objNetWork.MapNetworkDrive “[ドライブレター]:”, “[共有フォルダのパス]"−−−−−−−−(ここまで記事です)−−−−−−−−−−−−−−−−−−−−−
当方の場合を例にすると、
netdrv.vbsというファイルを作成
−−−−(以下の内容)−−−−−−−−−−−−−−−−−−−−−
WScript.sleep 3000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive"Z:","\\LANDRIVE\disk1"
objNetWork.MapNetworkDrive"Y:","\\LANDRIVE\disk2"
−−−−−(ここまで)−−−−−−−−−−−−−−−−−−−−−−・待ち時間は3秒
・サーバーLANDRIVEのdisk1フォルダをZドライブに
・LANDRIVEのdisk2フォルダをYドライブにしたいので、上記のように記述しました。
このnetdrv.vbsというファイルを適当なフォルダーへ保存しておき、ショートカットを作成してスタートアップフォルダに保存しておけば、次回の起動からは、ちゃんと「×」印のつかないネットワークドライブアイコンができています。
Windows 7では個人用スタートアップはユーザーフォルダの”[ユーザー名]>>AppData>>Roaming>>Microsoft>>Windows>>スタート メニュー>>プログラム>>スタートアップ”にあります。
AppDataは隠しフォルダになっているのでご注意下さい。
「×」印がついていても、実用的には問題なかったのですが、この対策を実施すれば「×」印もつかなくなり、スッキリしました。
追記
この記事を書いた当時、システムドライブはHDDを使っていたのですが、その後SSDへ換装しました。
すると、システムの立ち上がりが高速になり
この「PC起動時ネットワークドライブに接続できない」問題がより顕著になりました。
そのことについて書いた記事をこちらへUPしました。
PC起動時ネットワークドライブに接続できない(SSD編)
よろしければ参考にご覧下さい。
【2016年10月27日追記】
min 様やHummer 様のコメントで指摘がありましたので、調べてみました。
私が本来書いていたスクリプトは
WScript.sleep 3000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive"Z:","\LANDRIVEdisk1"
objNetWork.MapNetworkDrive"Y:","\LANDRIVEdisk2"
だったのですが、WordPressにより自動変換されて(「”」や「,」が全角に変換されていた)
WScript.sleep 3000
Set objNetwork = CreateObject(“WScript.Network”)
objNetWork.MapNetworkDrive”Z:”,”\\LANDRIVE\disk1“
objNetWork.MapNetworkDrive”Y:”,”\\LANDRIVE\disk2“
と表示されていたようです。
「"」半角、「”」全角や「,」半角、「,」全角 の微妙な違いが画面上では判別困難かも知れませんが、スクリプトは全て半角でなければエラーが出るということのようです。
今は、WordPressの自動変換機能を停止しましたので、そのままコピー&ペーストしても大丈夫だと思います。
【2018年4月17日追記】
その後、アクセス制限(パスワード等)のあるNASやドライブをネットワークドライブとして割り当てる場合のスクリプトを書く必要があり、調べてみました。
Windows管理者のためのWindows Script Host入門:
第8回 WshNetworkオブジェクトの詳細 (2/3)
という記事がとても参考になりました。
この記事を参考に、スクリプトを書き直してみました。
-----------------(以下の内容)------------------------------------------------------
WScript.sleep 3000
Set objNetwork = CreateObject("WScript.Network")
objNetWork.MapNetworkDrive"Z:","\\LANDRIVE\disk1", False, "username", "password"
objNetWork.MapNetworkDrive"Y:","\\LANDRIVE\disk2", False, "username", "password"
------------------(ここまで)--------------------------------------------------------
・第1パラメータ |
ネットワーク・ドライブとして割り当てるドライブ名。省略不可 |
・第2パラメータ |
共有フォルダのUNC名。省略不可 |
・第3パラメータ |
接続情報のユーザー・プロファイルへの保存とログオン時の自動再接続 (True=保存/再接続、False=保存しない) |
・第4パラメータ |
接続するユーザーのユーザー名 |
・第5パラメータ |
接続するユーザーのパスワード |
という変更で、無事にパスワードでアクセス制限のあるドライブへも割り当て可能になりました。
タグ
2012年10月1日 | コメント/トラックバック(10) |
カテゴリー:パソコン
トラックバック&コメント
トラックバック
-
[…] 下記を参考にしました。ありがとうございますッ。 PC起動時ネットワークドライブに接続できない […]
-
[…] (1)のスクリプトは以下を参考に作成しました。PC起動時ネットワークドライブに接続できない(追記あり)「drivemount.vbs」というファイルを新規作成し、例えばZドライブを使用して […]
-
[…] ・PC起動時ネットワークドライブに接続できない(追記あり) […]
コメント
sleep文とSet~Createが同一の行にあるとエラーになります。
自分の環境ではネットワークに繋がるのがとても遅いようでsleep時間を延ばしてやって対応できました。有用な記事をありがとうございます。
ume様
ご指摘ありがとうございます。
改行の件、記事を訂正しました。
自分では投稿の際に改行したつもりでしたが、改行されていませんでした。
ご迷惑をおかけしました。
ご指摘の通り、sleepの時間(待ち時間)はネットワークの速度やパソコンの立ち上がり速度によって変えないとなりませんので、カットアンドトライで決めるしかありません。
当方の拙い記事がお役に立てたようで光栄です。
記述プログラムを実行すると
行2
文字 31
コード800A0408
VBScript コンパイラーエラーと出ます。
お邪魔いたします。
私も同じ事象に悩まされていましたが、下記操作で解消しました。
お試しくださいませ。
①Windows Script Hostプログラムを書く際に、文字コードは『shift-jis』で作成する必要があるようです。benii様の記述をコピペしてドライブレターのみ書き換えするのではなく、メモ帳にて全てを記述しました。特に『”』がポイントのようです。
②私の場合、出来上がった『.vbs』はそのものをスタートアップに格納しました。
③ネットワークドライブを切断しPCを再起動(再起動は不要かも)
④改めてネットワークドライブの割り当て(ログオン時に再接続するのチェックを外す)
私の環境のシステムドライブはSSDですが、待ち時間3秒で『×』は無くなり、気持ちの良い起動となりました。
Hummer様
ご指摘頂いた文字コード問題を調べてみました。
私が書いたプログラムを「shift-jis」「UTF-8」「EUC-JP」の3通りで試しましたが、全てエラーは出ませんでした。
プログラム内は全て「半角」だからです。
記事の追記に書きましたが、WordPressの自動変換機能のため、特定の文字が全角になってしまい、記事からコピペすると「"」や「,」が全角のままのプログラム記述になっていたようです。
「"」と「”」の違いは虫眼鏡で拡大しないと判別できないかも知れません(笑)
benii様
お騒がせいたしました。
軽い気持ちで書き込みましたが、かえってご負担を掛けてしまった様です。申し訳けありません。
行2、文字31・・・
笑い話しですが、わたくしは虫メガネで見ましたw
使うPCによって、この症状になってしまうものと、そうでないものがあり、一様でないのが悩みの種ですが、店長様の丁寧な説明で無事解決なりました。
ところで私のところでは、マイドキュメントフォルダーの参照場所(ライブラリの場所)をネットワークドライブにしているのですが、上記方法でフォルダー切断を解決しましたら、この設定も解除されてしまいました。
この状況の解決方法もご存知でしたら教えていただければ嬉しいです。