web-dev-qa-db-ja.com

Windowsサービスでネットワーク共有にアクセスする正しい方法

リモートCIFS共有へのオンデマンドアクセスを必要とするWindowsサービスがあります。共有にアクセスする必要がある場合は常に、最初に提供された資格情報を使用して「マウント」しようとします。

Net Use \\Host\share password /USER:user

共有の内容を使用してから、共有を削除します。

Net Use \\Host\share /DELETE

現在、このサービスは、共有が初めて使用されたときにのみ機能します。以降の試行では機能せず、次のエラーが発生します。

NETは終了コード2で失敗しました

ただし、コマンドラインから手動で実行すると、この同じロジックはすべて完全に正常に機能します。サービスのコンテキストでのみ失敗します。

私の質問は次のとおりです。Windowsサービスでネットワーク共有を処理するためのより良い、より正しい方法はありますか? この記事 によると、ドライブ文字を使用しなくても、Net Useをサービスで使用することは推奨されていません。 Net Useに代わるものはありますか?私は使用する必要がありますか、それともサービスはデフォルトのLocalSystemユーザー以外のユーザーとして実行する必要があるだけですか?

理想的には、共有は直接必要な場合にのみアクセス可能である必要があります。したがって、可能であれば共有が毎回削除されるロジックを保持したいと思います。

2
TipsyTopsy

特定のユーザーアカウントとしてサービスを実行している必要があり、そのユーザーアカウントには共有にアクセスするためのアクセス許可が必要です。

ユーザー名とパスワードをこのように入力するのは、かなりひどい作業方法です。セキュリティのためだけでなく、移植性と管理のためにも。

3
Dan