1

これがばかげた質問である場合はご容赦ください。私はライティングサービスにかなり慣れていません。タイマーを実行するサービスを作成しました。タイマー コードは、システムが稼働していることを確認するためにいくつかのチェックを実行します。VB.Net、framework 1.1で書かれています。次に、「sc create」を使用してサービスをインストールします。このサービスは、私が開発しているXP Pro マシンで美しく動作します。ただし、サービスを Windows 2003 サーバー 64 ビットにインストールすると、サービスは失敗します。error 1053すぐに。OnStart関数のコードの最初の行としてテキストファイルに書き込むためにデバッグを入れましたが、それでも実行されないため、プログラムの起動に問題があるはずです。最後に必死になって、Visual Studio 2003 の新しい VB プロジェクトでまったく新しい Windows サービスを作成し、次のように OnStart 関数で文字列変数の値を宣言して設定するだけの空のサービスをコンパイルしました。

Dim strTmp As String
strTmp = "hello"

それでもW2K3 サーバーでは失敗しましたが、XP 開発マシンでは問題なく動作します。サーバーには .Net Framework 1.1 がインストールされており、動作しています。CMS (ASP.Net 1.1 で記述) で使用しています。サービスは、ローカル システム アカウントとして実行されます。デスクトップとの対話を有効にしようとしましたが、役に立ちませんでした。Process Monitor を実行しましたが、アクセス拒否イベントはありません。アプリケーション イベント ログを空にしましたが、まだ機能しません。ログで私を助ける他のイベントはありません。間違いなくアプリケーションのリリース ビルドを使用します。exe ファイルのアクセス許可は、システムと管理者のフル コントロールです。アイデアはありますか?それは簡単なことに違いないのですが、私がそれを理解することができたら、私はいまいましいです! 前もって感謝します。

@DavidHi、提案に感謝します。最初の点は私の問題ではないと思います。MS の記事がサービスの停止または一時停止に関するものであるため、私の場合は開始に失敗します。また、サービスがタイムアウトしないため、30 秒の待機がなく、すぐに失敗します。次に、例外ハンドラをサービスのスタートアップに追加するとは、OnStart サブのことですか? そこにデバッグファイルの書き込みを追加しようとしましたが、代わりにイベントログを追加してみます。システム チェックに関しては、私が作成した新しい空のテスト サービスが同じ動作を示し、何もしないため、それはあり得ません。最後のポイントが鍵になる可能性があります。私の開発環境は32bit. corflags について調査するか、64 ビットの開発環境を構築できるかもしれません。少なくとも考えるべき新しいことをいくつか教えていただき、ありがとうございました。

わかりました、回避策を見つけました。exeファイルを入れていましたSystem32。自分で作成した別のフォルダーに入れると、短時間ではありますがサービスが実行されました。次に、System32ではなく、iniファイルとそれが読み書きするログファイルもそのフォルダーに移動する必要があり、すべてうまく機能しているようです。System32 からの実行を好まない理由は神のみぞ知るところですが、少なくとも今は動作します! 助けてくれてありがとう。

4

2 に答える 2

0

1053 エラーは、サービスが開始要求に応答するのを待っているサービス コントロール マネージャーに関連するタイムアウトです。特に Framework 1.1 ベースのサービスに関連するマネージド サービスの停止要求の問題を参照するナレッジベースの記事があるため、問題を正確に説明しているわけではありませんが、状況に関連している可能性があります。ご参考までにリンクを貼っておきます。

http://support.microsoft.com/kb/839174

問題をさらに診断するために私が行うもう 1 つの提案は、サービスのスタートアップ コードで発生する「非表示の」例外が原因で Start が失敗しているかどうかを判断することです。start 呼び出しは例外を認識せず、単にタイムアウトしていると思わせる可能性があります。

サービスのスタートアップに例外ハンドラーを追加することをお勧めします。これは、例外がキャッチされた場合に、例外の詳細を含むメッセージをイベント ログに記録するだけです。これにより、少なくともサービス内で何か問題が発生しているという考えが得られ、現在よりも多くの情報が得られます.

最後に 1 つ考えてみてください。このサービスは、ネットワーク接続を介して説明したシステムをチェックしますか? その場合、LocalSystem にはネットワーク アクセスを実行するための十分な権限がありません。

幸運を!

EDITもう1つの可能性:

開発環境/実行可能ファイルは 32 ビットですか? サーバーが64ビットであると述べているため、実行可能ファイルで32ビット操作を強制する「corflags」ツールを使用する必要がある場合があります

corflags /32bit+ YourServiceExectubable.exe

この情報のソースは次の SO 投稿でした: 64 ビット環境での 32 ビット Windows サービス

**残念ながら、corflags は 2.0 アセンブリにのみ適用可能であり、特にこのタイプの問題のために設計されたようです。**

于 2012-09-19T14:21:45.100 に答える
0

これは、次の質問に非常によく似ています。 Windows サービスの開始がエラー 1053 で失敗する

他に注意すべき点がいくつかあります。

  • デプロイされたサービスに次のいずれのステートメントも含まれていないことを確認してください。

    System.Diagnostics.Debugger.Launch

    System.Diagnostics.Debugger.Break

  • Local System 以外のアカウントでサービスを実行する必要がある場合があります (サービスに必要なアクセス許可によって異なります)。

于 2012-09-19T14:25:53.293 に答える