これがばかげた質問である場合はご容赦ください。私はライティングサービスにかなり慣れていません。タイマーを実行するサービスを作成しました。タイマー コードは、システムが稼働していることを確認するためにいくつかのチェックを実行します。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 からの実行を好まない理由は神のみぞ知るところですが、少なくとも今は動作します! 助けてくれてありがとう。