Windows サービス用の Apache Commons Daemon コンポーネントである Procrun を使用して、Windows サービスとしてラップされる jar を開発しました。自分のコンピューターと他のいくつかの開発マシンではすべて正常に動作しますが、運用環境 (Windows Server 2008) にインストールすると、奇妙な動作が始まりました。
まず、サービスを開始して停止した後、何らかの理由で Java が動作しなくなります。コマンドプロンプトで従来の「java -version」と入力しても、何も出力されません。Java アプリケーションを起動しようとしても、まったく効果がありません。唯一の解決策は、JRE を最初から再インストールすることです。JRE を再インストールした後にサービスを停止して開始すると、サービスが再び壊れてしまいます。
もう一つの奇妙なことが起こっています。prunmgr を使用してサービスを管理している場合 (「MYSERVICE」など、サービスの名前に名前を変更した後)、サービス「gMYSERVICE」がインストールされていないというメッセージが表示されることがあります。場合によっては、私たちのサービスに「g」が追加されていると思われるようです。gprunsrv.exe と gMYSERVICE.exe のように、「g」が追加された 2 つの追加の隠しファイル (おそらく prunsrv と prunmgr のコピー) が存在することがあります。これらのファイルは、隠しファイル モードがオンになっていても、システム エクスプローラーを使用して表示することはできませんが、teamviewer によって検出できます。