2006年11月24日
川俣晶の縁側ソフトウェア技術雑記 total 13463 count

Vistaにおいて管理者権限で仮想ドライブを使う場合の注意

Written By: 川俣 晶連絡先

 とりあえずメモだけ。

 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のセキュリティモデルを理解し、正しくバッチを書き直すことでしょう。