2009-08-13 9 views
0

WinXP Pro SP3でVS 2005とC#を使用してWindowsサービスを作成しました。それは完了まで実行されてから終了する別のプログラムを開始します。Windows XP Proサービスは、ローカルシステムを使用せずにユーザーログオンを使用して実行します。

サービスは、installutilとserviceInstallerを使用してインストールされます。それはビルドリリースされ、C:\ Program Files \ MyServiceディレクトリに置かれます。 serviceProcessInstallerアカウントは、プロパティでLocalSystemに設定されています。

ログオンをローカルシステムに設定すると、try-catchブロックを使用して「アクセスが拒否されました」というエラーが表示されますが、正しいパスワードでアカウントにログオンを設定すると完全に実行されます。

私は間違っていますか?どんな提案も大歓迎です。

+0

私はこれを行うにはスプレを持つ十分な人が一緒にさまようならば、これがより良いと思います。 :) – EBGreen

答えて

0

アクセス拒否エラーの原因を知ることは役に立ちます。 try/catchブロックから来ていると言うので、それを処理するのはあなたのコードだと思います。それはあなたのサービスがうまく始まっていることを意味しますが、仕事をする上で問題があります。

LocalSystemの環境がユーザーアカウントと異なるため、環境に関連する問題である可能性があります。また、起動しているプログラムが正しく実行されておらず、エラーが返されている可能性があります。

これ以上の情報がなければ、それはちょうど投機である。他のプログラムは何をしていますか?エラーはどこで発生していますか?デバッグして、どの部分がアクセス拒否エラーを返すのはなぜですか?

0

合意されています。それはさておき、あなたのファイル/フォルダパーミッションサンドをチェックして、Systemが実際に必要な権利を持っていることを確認してください。レジストリキーについても同じ操作を行います。システムイベントログはあなたにいくつかの手がかりを与えるはずです。

0

両方の回答:ありがとうございました。

エラーはProcess.Start()呼び出しで発生します。

ファイルとディレクトリのセキュリティにより、Everyoneはディレクトリと実行可能ファイルに完全にアクセスできることが示されています。

見つけました! ProcessStartInfoオブジェクトにユーザー名とパスワードを追加しました。これは、ターゲットプログラムがデータベースにアクセスしようとするときに便利だと考えていました。おっとっと!私がそのようなものを取ったとき、目標は、それがすべきであるようにju​​ltを実行します。

返信いただいたすべての方にお返事ありがとうございます。 Mea Culpa!

関連する問題