性格悪い人が優勝

WindowsXPでsubstコマンドで仮想ドライブを作って運用しています。

起動時に自動的に仮想ドライブを作ってくれるようにするため、substコマンドを書いた.cmdファイルを用意して、タスクスケジューラで「システム起動時」に実行するように定義したのですが、実際にはPCが起動しても仮想ドライブはできていません。
PC起動後に、設定したタスクを右クリックして「タスクの実行」をしてみると、確かに仮想ドライブが割り当てられるのでコマンドファイル自体が間違っているわけではないと思います。
また、コマンドファイルでログを残すようにして調べてみると、substは確かに実行されているようで実行直後は割り当ても成功しているようですが、起動後にエクスプローラでみてみるとやはり仮想ドライブはありません。Windowsが勝手に割り当て解除してしまっているのでしょうか?

ご存じの方、何か情報をお願いしたいと思います。

[コマンドファイルの内容]
echo assigning drive E... %date% %time% > c:\log.txt
c:\Windows\system32\subst.exe e: c:\drive-e
c:\Windows\system32\subst.exe e: >> c:\log.txt
echo end of log >> c:\log.txt

[起動後に残っているログファイルの内容]
assigning drive E... 2010/07/23 19:33:39.40
E:\: => C:\drive-e
end of log

スタートアップに登録することでも似たようなことは実現できますがそれではタイミングが遅いので、タスクスケジューラに起動時に実行させたいです。

A 回答 (2件)

どうやらsubstを実行したユーザがログオフしてしまうと設定は解除されるようです。



タスクで実行するということは、実行のたびにそのユーザでログオンログオフが行われていることになりますから、今のやり方では無理ですね。


NTや2000の時には、%SystemRoot%にautoexec.ntという名前のバッチファイルを作っておくと、Windows起動時に1回だけ実行してくれましたが、XPではどうでしょうか。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

なるほど!substがログオフすると解除されてしまうこと、また、タスクは指定したユーザー名のログオン-->ログオフ動作を伴うこと、この2つのことを知りませんでした。
確かにログオフした時点でsubst割り当てが解除されますね。substはシステムが起動中ずっと有効だと思っていたので、タスクの設定がおかしいものと思いこんでそちらの方ばかり調査していました。

この2つのヒントを元に調査したところ、ポリシーエディタでコンピュータのスタートアップスクリプトに設定することで目的の動作が可能であることを確認しました。
「目的の動作」というのは、前回ログオフ/シャットダウン時に開いていたエクスプローラのフォルダを再度ログオンする時には開いておいて欲しかったかったのですが、「スタートアップ」メニューに登録したバッチファイルでsubstする場合は、エクスプローラが開く時点ではまだバッチファイルが実行されていないので「指定されたパスがない(実際にはまだ存在しない)」と怒られてしまうのが問題でした。

mashkunさんの情報が非常に参考になりました。ありがとうございました。

お礼日時:2010/07/24 11:41

以下の内容を「.BAT」で保存します。



SUBST E: C:\drive-e

これでだめでしょうか。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
バッチファイルでやってみても結果は同じです。

私が試したコマンドファイルでやる方法と、提示いただいたバッチファイルでやる方法とでは根本的に何か違うのでしょうか?
なぜバッチファイルでの方法を提示いただいたのか、何か根拠がおありでしたら後学のためにも教えてくださいませんか?

よろしくお願いします。

お礼日時:2010/07/24 11:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!