ネットワークドライブが見えない!
Active Directory環境において、グループポリシーのログオンスクリプトを利用して自動的にネットワークドライブに接続させようとしても、うまくいかないことがある。私が最近遭遇したのは、ログオンスクリプトをVBSで書いていてWScript.NetworkオブジェクトのMapNetworkDriveメソッドでネットワークドライブを割り当てたのに、マイコンピュータに表示されないしnet useコマンドでも表示されないというもの。MapNetworkDriveメソッドの結果をログファイルに出力してみると、結果(Err.Number)は0。つまり「スクリプト的には処理に成功している」のだが、「実際にはネットワークドライブが使えない」という状況であった。
一体何が起こっているのか?
調査の結果、technetに該当記事を見つけた。Windows Vista を使用したグループ ポリシーの展開のページ中程、「Windows Vista の消費設定 - ユーザー アカウント制御のためにグループ ポリシー スクリプトが失敗する」 セクションがそれである。
少し(かなり?)分かりにくい文章なので、現象が発生する条件を言い換えると、「Vista以降でUACが有効になっている場合で、ローカルPCの管理者権限を持つ(ローカルPCのAdministratorsグループのメンバの)ユーザでログオンした場合」に、この現象が起こる。ローカルPCに対して一般ユーザ権限しか持たないユーザでログオンすれば、この現象は起こらない。
詳細を図に示してみた。
Figure.1 ログオンスクリプトとエクスプローラの実行権限の違い |
一方、管理者ユーザ以外(一般ユーザ)でログオンすると、ログオンスクリプトも制限された権限で実行され、エクスプローラも同じく制限された権限で実行されるため、ネットワークドライブを見ることができる。
解決策:ネットワークドライブマップを制限された権限で実行する
先ほどのTechnetのページの一番下の方に、「付録 A : LaunchApp.wsf」というセクションがある。こいつは、スクリプトを制限された権限で実行するためのWrapper。使い方は簡単で、ログオンスクリプトとしてLaunchApp.wsfを実行するようにしておき、その引数として、実際に実行したいスクリプト(今回で言えばネットワークドライブをマップするスクリプト)のパスを与えてやればよい。LaunchApp.wsfを利用した時の動作イメージを下図に示す。
Figure.2 LaunchApp.wsf使用時の動作概念 |
0 件のコメント:
コメントを投稿