web-dev-qa-db-ja.com

名前と説明を指定してコマンドラインからWindowsサービスをインストールする方法

Delphiでクライアントサーバーアプリケーション用のWindowsサービスを作成しました。

インストールするには、私が使用します

c:\Test\MyService.exe /install (or /uninstall)

これによりサービスがインストールされ、Windowsサービスでは "MyService"の名前と空の説明がリストされます。

別の名前を定義して説明を挿入する方法(services.mscの実行時に表示されます)?

注:同じマシンに同じサービスを複数回インストールする必要があるため(データベースごとに1つ)、これが必要です。

現在、唯一の回避策は、サービスexeの名前を変更することですが、それを行うための正しいコマンドラインの方法を見つけたいと思っています(ShellExecuteからこれを行うため)。

pdate:どういうわけか私は次のようなものを探します(これはもちろん説明のためだけです!-InstallService.exeは私が考案したばかりの名前です):

InstallService.exe c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'

しかし、よりコンパクトなバージョンも次のようにうまくいきます:

c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'
13
LaBracca

Windowsには、必要なユーティリティ、つまりsc createが付属しています。

> sc create /?
DESCRIPTION:
レジストリとサービスデータベースにサービスエントリを作成します。
使用方法:
 sc create [サービス名] [binPath =] ... 
 
 OPTIONS:
注:オプション名には等号が含まれています。
等号とvalue。
 type = 
(デフォルト=自分)
 start = 
(デフォルト=デマンド)
 error = 
(デフォルト=通常)
 binPath = 
グループ= 
タグ= 
依存= 
 obj = 
(デフォルト= LocalSystem)
 DisplayName = 
 password = 

これによりサービスが作成され、名前と表示名を指定できるようになります。

説明を変更するには、sc descriptionが必要です:

> sc description /?
DESCRIPTION:
サービスの説明文字列を設定します。
 USAGE:
 sc description [サービス名] [説明] 

他の明白なオプションは、サービスにコマンドライン解析を組み込むことです。これは簡単に実行できます。サービスのBeforeInstallおよび/またはAfterInstallイベントにハンドラーを割り当て、そこでスイッチを処理するだけです。

14
David Heffernan