2016-12-09 1 views
1

WCF-RESTfulアプリケーション用にWindowsサービスを作成しました。サービスを実行するサーバーでは、ドメイン内のユーザーとしてサインインして、サービス内のデータベースにアクセスする必要があります。つまり、Windowsサービス(削除インストール&新規インストール)を更新するときに、サービスのプロパティでこのユーザーを手動で設定する必要があるたびに、そのことを意味します。すでにC#で(ユーザー名とパスワードを使用して)アカウントを設定することが可能であれば私の質問は、あるC#:ProjectInstallerで直接Windowsサービスにサインインする

public class WindowsService : ServiceBase { 
    public ServiceHost serviceHost = null; 

    public WindowsService() { 
     this.ServiceName = "Processing Engine Interface" 
    } 

    public static void Main() { 
     Run(new WindowsService()); 
    } 

    protected override void OnStart (string[] args) { 
     this.serviceHost?.Close(); 

     this.serviceHost = new ServiceHost(new RestService()); 

     this.serviceHost.Open(); 
    } 

    protected override void OnStop() { 
     if (this.serviceHost == null) return; 
     this.serviceHost.Close(); 
     this.serviceHost = null; 
    } 
} 

[RunInstaller(true)] 
public class ProjectInstaller : Installer { 
    private ServiceProcessInstaller process; 
    private ServiceInstaller service; 

    public ProjectInstaller() { 
     this.process = new ServiceProcessInstaller {Account = ServiceAccount.LocalSystem}; 
     this.service = new ServiceInstaller { 
      ServiceName = "Processing Engine Interface" 
     }; 
     this.Installers.Add(this.process); 
     this.Installers.Add(this.service); 
    } 
} 

は、C#で、私はWindowsサービスを作成するには、次のように構成されましたか?

答えて

2

ServiceProcessInstallerクラスには、Account、UserName、およびPasswordプロパティがあります。

https://msdn.microsoft.com/en-us/library/ddhy0byf(v=vs.110).aspx

WindowsインストーラおよびVisual Studio以外のツールを使用して、実際にされている場合は、Windowsインストーラのための他の(例えばWiXのような)ツール供給のサポートが内蔵されているためServiceInstallとに、Servicecontrolコードは必要ありません機能性。

+0

はい、正しくはありますが、設計時にこれらのプロパティを見つけられず、コードでのみ使用できます。私は、このリンクはより具体的なリファレンスだと思うhttps://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.serviceprocessinstaller.account?view=netframework-4.7.1 –

関連する問題