1. ホーム
  2. ウィンドウズ

[解決済み】ネットワークドライブをサービスで使用するようにマッピングする

2022-04-05 21:39:27

質問

ある Windows サービスが、マップされたネットワークドライブと UNC パスを必要とするコードを使用しているとします。サービスが開始されたときに、そのサービスのセッションでドライブマッピングを利用できるようにするにはどうしたらよいでしょうか。サービス・ユーザーとしてログインし、永続的なマッピングを作成しても、実際のサービスのコンテキストでマッピングを確立することはできません。

解決方法を教えてください。

セッション/ドライブアクセスの問題とは別に、永続的なドライブマッピングは対話型ログオン時にのみ復元されますが、これは通常サービスが実行しません。

ヘルパープロセスのアプローチは非常にシンプルです。ドライブをマッピングする新しいサービスを作成し、「本物の」サービスを開始するだけです。これに関して全く些細なことではないのは

  • ヘルパーサービスは、適切な SCM コマンド (開始/停止など) をすべて実サービスに渡す必要があります。もし実サービスがカスタムの SCM コマンドを受け付けるなら、それも忘れずに渡してください(UNC パスをエキゾチックと見なすサービスがそのようなコマンドを使うとは思っていませんが......)。

  • クレデンシャルに関しては、少し厄介なことになるかもしれません。実サービスが通常のユーザーアカウントで実行されている場合、ヘルパーサービスもそのアカウントで実行することができ、そのアカウントがネットワーク共有に適切にアクセスできる限り、すべて問題ないはずです。実際のサービスがLOCALSYSTEMまたはそのようなものとして実行されたときにのみ動作する場合、ネットワークドライブをまったく「見る」ことができないか、または動作させるためにいくつかのクレデンシャル・ジャグリングを必要とするため、事態はより面白くなります。