-3

実行可能ファイルをサービスとしてインストールする必要があり、C#で記述されたPowerShellcdmletを使用してインストールする必要があります。本質的には、サービスを定義する必要なレジストリエントリなどを作成する必要があります(実行する実行可能ファイルを含む-一種のsrvany.exe)。

また、このサービスのログオンID(クレデンシャル)を定義できる必要があります。

TIA、ハンス

これまでに何を試しましたか。ServiceProcessInstallerクラスとServiceProcessInstallerクラスを見てきましたが、「外部」実行可能ファイルを定義する可能性がありません。

    public partial class MyServiceInstaller : Installer
    {
        public MyServiceInstaller()
        {
            IDictionary saveState = null;
            this.Installers.Clear();
            ServiceProcessInstaller spi = new ServiceProcessInstaller();
            ServiceInstaller si = new ServiceInstaller();
            spi.Account = ServiceAccount.LocalSystem;
            spi.Username = null;
            spi.Password = null;
            si.ServiceName = "MyService";
            si.DisplayName = "MyService";
            si.StartType = ServiceStartMode.Automatic;
            si.Description = "MyService - I wish....";

            spi.Installers.Add(si);
            this.Installers.Add(spi);
            this.Install(saveState);
        }
    }

実行可能パス(サービスイメージパス)を追加する方法が見つからないため、ここでスタックしました

4

2 に答える 2

0

さて、次のコードが機能していますが、それを行うためのより「ネイティブな」方法があるのではないかと思っています。

                Command psc = new Command("New-Service");
                psc.Parameters.Add("Name", svcName);
                psc.Parameters.Add("BinaryPathName", svcExec);
                psc.Parameters.Add("DisplayName", svcName);
                psc.Parameters.Add("Description", svcDesc);
                psc.Parameters.Add("StartupType", "Automatic");
                WriteVerbose("Verifying service account");
                if (Account == null) { WriteVerbose("- Using LocalSystem account"); }
                else { psc.Parameters.Add("Credential", crd); }
                WriteVerbose("Installing service");
                Pipeline pipeline = Runspace.DefaultRunspace.CreateNestedPipeline();
                pipeline.Commands.Add(psc);
                Collection<PSObject> results = pipeline.Invoke();
于 2013-02-15T11:13:26.243 に答える