Tomcat 서버에 대한 Windows 서비스를 만들었으며 제대로 실행되고 있지만 서비스 이름을 삭제하지 않고 변경하고 싶습니다.
서비스 이름을 변경하는 cmd \ GUI 단계가 있습니까?
답변
@bfhd의 답변은 표시 이름 (의 목록에 표시되어 Services.msc
있지만 “실제”서비스 이름이 아님) 을 변경하려는 경우 작동합니다 (서비스 정보가 들어있는 레지스트리 키의 이름이며 API는 좋아 OpenService
).는 섹션 비고 이 MSDN 기사 좀 더 표시 이름 대 서비스 이름에 대한 이야기를.
불행히도 서비스 이름을 변경하는 공식적인 방법은 없습니다. 당신이 절대적 그러나, 그것은 아마도 수 있어야 대신 어떤 이유로 새 이름으로 설치하는 다시의 서비스 이름을 바꿉니다. 다음을 수행하십시오.
- 서비스를 중지하십시오. 실행중인 서비스에서이 작업을 수행하면 서비스 제어 관리자가 혼동 될 수 있습니다. (어쨌든 혼동을 일으킬 수 있습니다. 이것은 매우 해키입니다.)
regedit.exe
(레지스트리 편집기)를 엽니 다 .HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
서비스 이름이있는 하위 키로 이동하여 찾습니다.- 3 단계에서 찾은 키를 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택하십시오. 서비스의 새 이름을 입력하십시오.
- 컴퓨터를 다시 시작하십시오.
Services.exe
서비스 제어 관리자를 호스팅하는 프로세스는 변경하지 않으면 변경 사항을 볼 수 없습니다. 이름이 바뀐 프로세스를 시작하려고 시도하거나 실제로 상호 작용하면 실패합니다.
나는이 일을 약속하지 않습니다. 그러나 어떤 이유로 든 새로운 이름으로 서비스를 다시 설치하는 것이 허용되지 않는 경우 시도해 볼 가치가 있습니다.
이 프로그램을 수행해야하는 경우가 있습니다 함수가 존재 RegRenameKey
하면 위의 네 번째 단계를 할 수 있습니다. 내가 말할 수있는 한,이 기능은 완전히 비공식적이므로 스트레스 가 존재할 수 있습니다. MSDN에 없으며 귀중한 정보가 거의 없습니다. Windows 헤더 (프로토 타입이 있고 Vista-NT6.0 이상에서만 나타남)를 제외하고 내가 찾은 유일한 것은 Sysinternals forum post 이며 NT syscall (또한 문서화되지 않음)을 호출 함을 나타냅니다. ). 의 함수 프로토 타입 WinReg.h
은
WINADVAPI
LSTATUS
APIENTRY
RegRenameKey(
_In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKeyName,
_In_ LPCWSTR lpNewKeyName
);
답변
서비스를 변경하기위한 Windows 명령 행 프로그램은 “sc”입니다.
다음은 Microsoft 참조 페이지입니다. https://technet.microsoft.com/en-us/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"
, NOT displayname="New Name"
)