とりあえずメモだけ。
Vistaは通常状態では処理できない操作が多くあるため、必要に応じて管理者権限でプログラムを実行する必要が生じます。
ところがこのとき、仮想ドライブが利用できないという状況が起こることがあります。
実例 §
以下は、並べて開いた一般ユーザー権限のコマンドプロンプトと、管理者権限のコマンドプロンプトをほぼ同時に実行した例です。
同じ仮想ドライブが利用できなくなっていることが分かります。
一般ユーザー権限のコマンドプロンプト §
D:\>net use
新しい接続は記憶されます。
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK P: \\XXXXXX\YYYYYY Microsoft Windows Network
OK Q: \\XXXXXX\YYYYY Microsoft Windows Network
OK R: \\XXXXXX\YYYYYYY Microsoft Windows Network
OK S: \\XXXXXX\YYYYYYYY Microsoft Windows Network
コマンドは正常に終了しました。
D:\>
管理者権限のコマンドプロンプト §
D:\Windows\system32>net use
新しい接続は記憶されます。
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
利用不可 P: \\XXXXXX\YYYYYY Microsoft Windows Network
利用不可 Q: \\XXXXXX\YYYYY Microsoft Windows Network
利用不可 R: \\XXXXXX\YYYYYYY Microsoft Windows Network
利用不可 S: \\XXXXXX\YYYYYYYY Microsoft Windows Network
コマンドは正常に終了しました。
D:\Windows\system32>
解決策 §
その1 §
管理者権限のコマンドプロンプト上で、net use ドライブレター: \\サーバ名\シェア名と打ってやれば、管理者権限で利用可能な仮想ドライブをマップできます。
一般ユーザー権限で設定した仮想ドライブと同じドライブレターを指定してもOKです。上書きされる形で仮想ドライブが設定されます。別のシェアに割り当てても可です。
その2 §
UNCを使って仮想ドライブを経由しないでアクセスすることは問題なく可能です。
分かりやすさ、トラブルの起こりにくさから、この方法の方がベターではないかと思います。
考察と問題点 §
どうやら、仮想ドライブのマッピング情報は一般ユーザー権限と管理者権限で共有されて「いない」にも関わらず、共有されているかのように「見えてしまう」というのが問題の要点のようです。
しかし、これは大きな罠となります。Windows XPで動作していたファイルバックアップのバッチ等を「何となく動きそうだから」という理由で管理者権限で走らせると、見えているはずのドライブにアクセスできない問題が生じます。
本当の意味での解決策は、Vistaのセキュリティモデルを理解し、正しくバッチを書き直すことでしょう。