多くのフォーラムで、ユーザーがログオンしていないため、マップされたドライブにサービスからアクセスできないことを読みました。
質問1)あるアカウントとして、ログオンとしてサービスを作成しようとしましたが、そのアカウントにネットワークドライブをマッピングしました。サービスはまだアクセスできません。なんで?
質問2)同じサービスから、別のプロセスを呼び出します。プロセスはどのユーザーアカウントで実行されますか?
ありがとう
多くのフォーラムで、ユーザーがログオンしていないため、マップされたドライブにサービスからアクセスできないことを読みました。
質問1)あるアカウントとして、ログオンとしてサービスを作成しようとしましたが、そのアカウントにネットワークドライブをマッピングしました。サービスはまだアクセスできません。なんで?
質問2)同じサービスから、別のプロセスを呼び出します。プロセスはどのユーザーアカウントで実行されますか?
ありがとう
1) 代わりに UNC パスを使用すると、マップされたドライブ文字にアクセスする必要がなくなります。同じアカウントで実行している場合でもアクセスできない理由については、実際のコードを見ないと断言できません。
2) プロセスの起動方法によって異なります。ShellExecute()
またはを使用するCreateProcess()
と、呼び出しスレッドのユーザー アカウントで実行されます。、、またはを使用するCreateProcessAsUser()
と、渡したユーザー アカウントで実行されます。CreateProcessWithLogonW()
CreateProcessWithTokenW()
サービス モードで JBoss を実行しているときに同様の問題に直面しました。「ログオン:」オプションをドライブをマップした同じユーザーに変更した後でもサービスを実行しても、Java コードはマップされたドライブにアクセスできませんでした。
次に、同じサービスを使用してドライブをマップできれば、それが機能するはずであることがわかりました。
そして最後に、service.bat ファイルの先頭に単純なコマンドを追加するだけで問題が解決しました。
net use x: \\SERVERNAME\SHARENAME
マップされたドライブはユーザーごとのリソースであるため、サービスは XP 以降ではマップされたドライブにアクセスできません。ドライブします。
サービスがドライブ自体をマップする場合があります。