Tomcatサーバー用のWindowsサービスを作成しましたが、正常に稼働していますが、今はサービス名を削除せずに変更したいと思います。
サービス名を変更するためのcmd\GUIの手順はありますか?
表示名(Services.msc
のリストに表示されているものですが、「実際の」サービス名(サービス情報を含むレジストリキーの名前ではない)を変更したいだけの場合は、@ bfhdの回答は有効です) このMSDNの記事 の備考セクションでは、OpenService
)などのAPIでサービス名と表示名についてもう少し詳しく説明しています。
残念ながら、サービスの名前を変更する正式な方法はありません。ただし、何らかの理由でサービスを新しい名前で再インストールするのではなく、サービスの名前を絶対にmustに変更した場合は、おそらく可能です。以下をせよ:
regedit.exe
(レジストリエディタ)を開きます。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
に移動して、サービスの名前を持つサブキーを見つけます。Services.exe
は、変更しない限り変更を認識しません。名前を変更したプロセスを起動しようとすると(または実際にはまったくやり取りをしようとすると)失敗します。私はこの作業を約束しません。ただし、何らかの理由でサービスを新しい名前で再インストールするだけでは不十分な場合は、試してみる価値があります。
プログラム的にこれをしなければならない場合、mayがRegRenameKey
という関数が存在し、それがあなたのために上記の4番目のステップを実行できます。私はmayが存在することを強調しています。私が言うことができる限り、この関数は完全に非公式です。これはMSDNにはないので、それに関する貴重な小さな情報があります。私が見つけた唯一のものは、Windowsのヘッダー(プロトタイプを持っていて、それがVistaだけにあることを示す - NT6.0以降)以外に、 Sysinternalsフォーラムの投稿 である。それはNTシステムコールを呼び出します(これも文書化されていません)。 WinReg.h
からの関数プロトタイプは、
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
サービスを変更するためのWindowsコマンドラインプログラムは "sc"です。
これがMicrosoftのリファレンスページです。 https://technet.Microsoft.com/ja-jp/library/bb490995.aspx
サービスの表示名を変更するには、実行します。
sc config "Old service name" displayname= "New service name"
実行ファイルを変更するには、実行します。
sc config "Service name" binpath= "C:\path\to\executable\here"
どちらのコマンドでも、=と新しい名前の間にスペースがあることを確認してください(例:displayname= "New Name"
、NOTdisplayname="New Name"
)