タスクやIIS(ASP.NET)でネットワークドライブを使用する

タスクやIIS(ASP.NET)でネットワークドライブの割り当てを使用すると上手くパスが認識しない場合があります。
ネットワークドライブの割り当てによるドライブの設定がユーザー単位で保存されており、
タスクの実行時やIISでのプロセスが別ユーザーで実行されるためにおこるようです。

そうした場合に有効なのが
\\192.168.10.1\shared\backaup.txt
といったUNC表記です。

しかし、どうしても事前に割り当てたドライブレターを使用したい場合もあります。
そうした場合の解決案は以下の通りです。

まずはネットワークドライブですが、いずれかの方法でマウントしてドライブを作成します。
物理的に必用なわけではないので、Windows7、WindowsServer2008R2以降のマシンならVHDを作成してマウントするのが簡単でお勧めです。

VHD

次に作成した新しいドライブ上にネットワークドライブを指定したシンボリックリンクを作成します。

>mklink /D Q:\Dir \\192.168..10\Shared\Dir

もしリモートサーバー上のシンボリックリンクがうまく動作しない場合は設定を変更する必要があるでしょう。
管理者権限のコマンドプロンプトで下記コマンドを実行します。

>fsutil behavior query symlinkevaluation
ローカルからローカルへのシンボリック リンクは有効です。
ローカルからリモートへのシンボリック リンクは有効です。
リモートからローカルへのシンボリック リンクは無効です。
リモートからリモートへのシンボリック リンクは無効です。

>fsutil behavior set symlinkevaluation  L2L:1 L2R:1 R2R:1 R2L:1

>fsutil behavior query symlinkevaluation
ローカルからローカルへのシンボリック リンクは有効です。
ローカルからリモートへのシンボリック リンクは有効です。
リモートからローカルへのシンボリック リンクは有効です。
リモートからリモートへのシンボリック リンクは有効です。

これで見事にどのユーザーからも見れるネットワークドライブが完成です :x001:

タイトルとURLをコピーしました