2017-12-08 12 views
0

こんにちは!私は現在、PCが30秒間無線接続を失うと、特定のプロセスを停止する単純なC#.NETサービスを作成しています。ワイヤレス接続が戻ったら、プロセスを再開します。サービスのロジックはすべて健全に見えますが、サービスが実行されるPC上に存在する同じディレクトリからターゲットアプリケーションが実行されているVisual Studioの開発環境でサービスを実行すると完全に機能します。ただし、リモートPCでサービスを実行すると、ネットワークに再接続するとアプリケーションが再起動されることはありません。 try-catchにもエラーはありません。私は、作業ディレクトリが問題になっているということについて、まあまあ読んだことがありますが、なぜそれが自分のマシンで動作しているのか、他のマシンで動作しているのか説明していません。ここで私は現在、使用していたコードされています Windowsサービスをインタラクティブモードで使用しても、サービスとして使用しないで、特定のアプリケーションを起動するのはなぜですか? (Process.Start)

を他のいくつかの注意事項:

試してみました-Iは、さまざまな権限レベルの異なるユーザにサービスを実行しています。管理者としてサービスを実行しても違いはありません。

-UACは完全にオフです。

-FireDaemonを使用してターゲットPC上のセッション0で対話モードでサービスを実行しようとしました。

誰かに何か調べるためのアイデアはありますか?サービススターターの

+0

サービスを開始しないでください.System.ServiceProcess名前空間のドキュメントと例を見てください。 – Rob

+0

@Rob \t 返信ありがとう、実際は私の場合、私は書いたサービスを使ってアプリケーション.exeを終了して再起動しようとしています。アプリケーションの再開は私が失敗しているところです。 –

答えて

0

スニペットは、あなたは

{ 
using System.ServiceProcess; 
using... 

namespace myServicenamespace 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     static void Main(string[] args) 
     { 
      ServiceBase[] ServicesToRun; 
      ServicesToRun = new ServiceBase[] { 
       new myService() 
      }; 
      ServiceBase.Run(ServicesToRun); 
     } 
    } 
} 

などのサービスの

{ 
protected override void OnStart() {...} 
protected override void OnStop {...} 
} 

展開も異なり含め、実行して持つようにしたいコードとして別の場所で定義されるmyServiceを、開始しますServiceProcessの残りのドキュメントを参照して、さらに詳細を確認してください。

+0

返事をありがとう、実際に私の場合、私はすでに実行中のサービスを書いています。私は書いたサービスを使ってアプリケーション.exeを終了して再起動しようとしています。アプリケーションの再開は私が失敗しているところです。 –

+0

多くの場合、サービスは異なる権限で実行されることを忘れないでください。すべてのエラー出力(権限と環境設定の不備のためにサービスから再び困難になることがありますが、Windowsイベントシステムを使用してサービスからのフィードバックを得ました) – Rob

+0

サービスをドメインとして実行しようとしましたadmin(これはPC上の管理者)の許可を得ています。同じ結果。残念ながらヒットしていない試しキャッチがあるので、どこのエラーのログを出力するかはわかりません。タスクマネージャーからプロセスが開始されていますが、アプリケーションウィンドウは表示されません。 –

関連する問題