2009-06-30 13 views
3

PDFファイルをディレクトリに書き込むためのWindowsサービスを開発しました。このサービスは、ローカルドライブへのファイルの書き込みに問題はありません。しかし、ネットワークにマップされたドライブに書き込もうとすると、失敗し、アプリケーションディレクトリにファイルが書き込まれます。windowsサービス

+0

あなたは、あなたが得たのWin32 APIエラーを言及していません。 – anand

答えて

5

これは、同じサービスを作成しているとき(ネットワークドライブでPDFを読み込んで保存する)の経験です。私は2台のドライブを持っていました:最初は認証の必要なし、もう1台は認証する必要がありました。マップされたネットワークとの

一般的な故障は、ドライブ文字の対

  • UNCパスをドライブ:ドライブ文字のは、あなたがUNC表記を使用してパスを指定する必要があり、動作しません。 (例えば\\ 10.17.194.1 \で、remotedir \)

  • 認証:ネットワークドライブを認証するためにあなたを必要とする場合、私が見つけた唯一の方法は、サービスを実行しているマシン上で認証ユーザーを作成することでした。ネットワークドライブにアクセスするために "RemoteUser"と "RemotePassword"として認証する必要がある場合は、サーバー上にRemoteUser/RemotePasswordアカウントを作成し、このユーザーとしてサービスを実行させる必要があります。

    ディレクトリにアクセスする権限がない場合は、ディレクトリ/ファイルが見つからないか、存在しないという例外が表示されます。

  • サービスはそれ自身で接続を確立できません:また、エクスプローラから手動でネットワークドライブに少なくとも1回はアクセスする必要があります。私のサービスは、ネットワークドライブとの接続をそれ自体で確立することができませんでした。以前はエクスプローラで確立されていなければなりませんでした。

このいずれかの点が役立つことを願います。

0

サービスを実行しているユーザーを受け付けるようにネットワークドライブの書き込み権限を設定しようとしましたか?

+0

サービスは自分のローカルアカウントを使用して実行されています。コンソールモードを使用してアプリケーションを実行すると、ネットワークマップドライブに書き込まれます。 – gopal

2

サービスが実行されているアカウントの種類がネットワークにアクセスできるようにする必要があります。

「ローカルシステム」ユーザーは、ネットワークにマップされたドライブにアクセスする権限を持っていない可能性がありますが、ローカルのハードドライブに書き込むことができます。ネットワーク共有のアクセス許可を持つサービスを実行するユーザーを設定できるはずです。

0

デフォルトでは、WindowsサービスはLocalServiceアカウントで実行されるため、サービスはデフォルトで特別な権限を取得しません。おそらく、サービスのアカウントをNetworkServiceアカウントに変更した場合、それは機能します。

+0

私はそれを試した。サービスはNetworkServiceモードで実行されています。しかし、ネットワークにマップされたドライブに書き込むことはできません。 – gopal

+1

私はこの問題についての詳細な議論を発見しました:http://bytes.com/groups/net-c/234214-access-mapped-drive-windows-service それが役立つことを願っています。 – Jonathan

+1

マッピングされたドライブはサービスでは機能しません。代わりにUNCパスを使用する必要があります。 – tomfanning

0

私は、次の項目をチェックします:サービスとして実行していないとき

  1. は、あなたのプログラムの仕事をしていますか?
  2. エラーボックス(愚かな質問かもしれない;-))のようなGUI要素がないのは確かですか?
  3. .NETを使用してサービスを作成していますか?(CAS)

サービスのデバッグに問題がある可能性があります。デバッガを接続して、どのエラーが発生しているかを教えてください。それはここの人々があなたを助けるのに役立ちます。

CAS