2011-07-30 28 views
0

openpopメールクライアントを使用して電子メールを取得するWindowsサービスを作成しました。次に、件名と本文の更新データベースとすべての種類のものを通過します。また、添付ファイルをダウンロードして、年、月、曜日の電子メールのタイムスタンプに基づいてドライブにフォルダディレクトリを作成し、イメージを保存します。そこで、クラスライブラリプロジェクト、デバッグ用のWinformプロジェクト、およびWindowsサービスプロジェクトを使用して、開発中のマシンにこのサービスを構築しました。 すべてのロジックはClasslibraryに含まれています。私はライブラリを構築し、フォームとWindowsサービスの両方でdllを参照します。私が自分のマシンにサービスをビルドし、installutilを使ってインストールすると、うまく動作し、やるべきことをします。しかし、プロダクションに出掛けたとき、OSはWindows Server 2003 R2であり、LIVEデータベースには別の接続文字列を使用しています。Windowsサービスのアクセス許可の問題

変更されたのは接続文字列とオペレーティングシステムだけです。私はサービスをインストールし、それは正常にインストールされたが、何もしません。それは、フォルダを作成したり、ディスクにイメージを保存したりしません。私はエラーをログに記録するべきだったはずですが、これは私の最初の仕事であり、私はこの分野では新しいです。だから私はいくつかのロギングイベントを書こうとしましたが、ログを作成せずイベントを書き込んでいません。事実、ログを作成してイベントを書き込もうとすると、オンスタートサブの最初の呼び出しのように、それはそれをしません。今私は迷っています。どこから行くのかわかりません。あなたがこれを読む時間があれば、あなたが持っている可能性のある入力を感謝します。

これは私のOnStartメソッドのコードです。

Dim LiveEvents As New EventLog 
    If Not EventLog.SourceExists("MySource") Then 
     EventLog.CreateEventSource("MySource", "GL") 
    End If 
    LiveEvents.Source = "MySource" 
    LiveEvents.Log = "GL" 
    LiveEvents.WriteEntry("ServiceStarted and is working.", EventLogEntryType.Information) 
    Dim Logic As New ProcessMail 
    workTimer = New Timer(New TimerCallback(AddressOf Logic.ProcessMessages), Nothing, (1000 * 60 * 10), (1000 * 60 * 10)) 
    LiveEvents.WriteEntry("Called Our DLL", EventLogEntryType.Information) 
    MyBase.OnStart(args) 

ここで質問がわからない場合は、 1. Windows Server 2003 R2にWindowsサービスを使用してディレクトリを作成し、ファイルを保存する必要がある場合。どのSystem System.ServiceProcess.ServiceInstallerアカウントプロパティを使用する必要がありますか? 2.ディレクトリに読み書きアクセス権を持つアクセス権を持つサービスをインストールするために、winows server 2003 R2で行う必要のある特別なセットアッププロセスはありますか?

ご連絡ありがとうございました。

+0

サービスは誰が実行していますか?ローカルシステムまたは特定のアカウント?どのフォルダを作成しようとしていますか?あなたは戻っていくつかの計測器を追加して、起こっているエラーをキャッチして、それが何の不満を抱いているのかを把握する必要があります。 – Joe

+0

サービスは管理者として実行し、c:/ imagesフォルダにセットアップ中にその場でフォルダを作成する必要があります。そして、ローカルシステムが最も強力な場合は、各アカウントプロパティに対して4つのビルドを作成しました。それを使用します。 –

+0

SCMにはどのようなアカウントが設定されていますか? – Joe

答えて

1

選択したアカウントには、ディレクトリに対する十分な権限が必要です。フォルダに適切なアクセス許可を設定している限り、アカウントには何も特別なものはありません。トラブルシューティングの最も簡単な方法は、強力なアカウント(ローカルシステムなど)から始め、「ログオン」タブのサービスプロパティアプレットを使用して任意のアカウントを変更できます。サービスを停止して再起動し、 )。 「すべての人」にフォルダへのフルアクセスを許可し、帽子に違いがあるかどうかを確認することができます。問題を診断した後、必要な権限と権限を残しておいてください。

また、問題が見つかった場合は、sysinternalsのツールを使用してください(http://technet.microsoft.com/en-us/sysinternals/bb545027)。 )サービスが実行されるアカウントには、イベントログへの書き込み権限が必要です。あなたが言及したように、より多くのログを追加することも良い選択肢かもしれません。

サービスがエラーなしでインストールされ、サービスアプレットで実行中であることを確認します。

+0

はい、エラーなしでインストールしています。少なくとも、installutilとイベントアプリケーションログには、サービス開始。私はローカルシステムを推測し、何とかC://イメージフォルダを作っています(ここでフォルダが作成されます)。私はそれについて何かの許可を与える必要がありますが、それについてもわかりません。 –

+0

システムではまだログを作成せず、イベントを作成していません。それがサービスの最初のものであっても、 –

+0

サービスからいくつかのコードを提供できますか? OnStartEventで何が実行され、どのようにログを作成し、どのように書き込むのですか? – KJRB

関連する問題