2011-01-11 8 views
2

C#で書かれたWindowsサービスでthis.ServiceNameを使用してプログラムでサービス名を取得するにはどうすればよいですか?私はこれを試してみると、アセンブリの参照を求めていますが、何も受け付けていません:C#で書かれたWindowsサービスでServiceNameを取得するにはどうすればよいですか?

string path = this.ServiceName + ".config"; 

ですが、そのエラーです。

+1

どのようなエラーが発生しますか? – HABJAN

+0

正確なエラーがどのようなものか教えていただけますか?コンパイラでエラーが発生した場合は、表示されたとおりに投稿すると便利です。それは単に "そのエラーを出す"よりも多くの情報を私たちに提供します。 –

+0

あなたのコードはこの質問と何が関係していますか?そして、あなたはどんなエラーを出していますか? – leppie

答えて

4

を使用し取得します。

これを受け取ると、this.ServiceNameのプロパティにアクセスできます。

サンプル:

public partial class Service1 : ServiceBase 
{ 
    public Service1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     string test = this.ServiceName; 
    } 

    protected override void OnStop() 
    { 
    } 
} 

あなたがメイン()(Programクラス)からアクセスしたい場合は、その後、あなたはこのような何かを行うことができます。

namespace WindowsService1 
{ 
    static class Program 
    { 
     static ServiceBase[] _servicesToRun; 

     static void Main() 
     { 
      _servicesToRun = new ServiceBase[] 
      { 
       new Service1() 
      }; 

      string serviceName = _servicesToRun[0].ServiceName; 

      ServiceBase.Run(_servicesToRun); 
     } 
    } 
} 
+0

main関数からサービス名にアクセスしようとしている最後の入力に基づいて答えを編集しました。 – HABJAN

0

設定ファイルにアクセスするには、サービス名ではなくアプリケーション名が必要です(標準の.Netアプリケーション設定ファイルを使用している場合)。

アプリケーションの実行可能ファイルは、あなたのサービスがSystem.ServiceProcess.dllからServiceBaseを継承する必要がSystem.AppDomain.CurrentDomain.FriendlyName

3

がための.configファイルを見つけるにはあなたのサービスはではありません。サービス名を使用してください。これはCLRの仕組みではなく、EXE名に基づいて.configファイルを選択します。修正:

var path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; 
関連する問題