web-dev-qa-db-ja.com

Windowsサービスからマップされたディレクトリにアクセスする方法

経験則として、Windowsサービスはマップされたドライブにアクセスできないため、代わりにUNCパスを使用する必要があります。

これを回避して、Windowsサービスがマップされたドライブにアクセスできるようにする方法があると確信していますが、どこにも見つかりません。

私の特定のケースは、Windows2008サーバーでTomcat7を実行している場合です。

5
Edd

マップされたディレクトリまたはUNCパスを使用する代わりに、シンボリックリンクを使用することもできます。

NTFSシンボリックリンク(symlinks)はUNCパスを参照できますが、要求された場所へのリダイレクトがないという点でショートカットとは異なります。次のようにシンボリックリンクを作成すると...

mklink /D C:\myLink \\127.0.0.1\c$

...次にC:\myLinkを開くと、現在のフォルダのアドレスはC:\myLinkではなく\\127.0.0.1\c$になります。これは、myLinkがシンボリックリンクではなくショートカットの場合に得られるものです。 。これは、アプリケーションにUNCパスとの互換性の問題がある場合に重要です。

さらに、シンボリックリンクはファイルシステムに存在し、平均マッピングされたドライブが必要とするため(通常は自動化)、Windowsサービスで利用できるため、ログオン後に再作成する必要はありません。

13
Edd

私はうまく機能しているように見えるこの問題の解決策を見つけました: https://stackoverflow.com/a/7867064/669645

私が取った手順:

  1. コマンドNet Use z: \servername\sharedfolder /persistent:yesを含むbatファイルを作成します
  2. スケジュールされたタスクを作成します
    • ユーザーを「システム」に設定
    • Batファイルを実行するアクションを追加する
  3. タスクを手動で実行します(スケジュールを設定する必要はありません)

注:ドライブは「Disconnected Network Drive(Z:)」と表示されますが、ログインしているすべてのユーザーとWindowsサービスにアクセス可能

1
Edd