윈도우즈 서비스의 "실행 파일 경로" 수정
응용 프로그램 경로를 수정하고 싶지만, 서비스가 여전히 이전 위치를 가리키기 때문에 경로가 끊어집니다.
가는 것으로Administrative Tools > Services
속성 대화상자를 열고 다음을 볼 수 있습니다.Path to executable
바꿀 방법이 없어요
사용자가 애플리케이션을 다시 설치하지 않고 서비스 경로를 수정할 수 있는 방법이 있습니까?
또한 SuperUser에서 볼 수 있는 이 접근 방식은 다음과 같습니다.sc
레지스트리를 수정하는 대신 명령줄:
sc config <service name> binPath= <binary path>
참고: 다음 뒤의 공백binPath=
중요합니다.다음을 사용하여 현재 구성을 쿼리할 수도 있습니다.
sc qc <service name>
그러면 다음과 유사한 출력이 표시됩니다.
[SC] 쿼리 서비스 구성 SUCCESS
SERVICE_NAME: 서비스 이름
TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Services\ServiceName LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : <Display name> DEPENDENCIES : SERVICE_START_NAME : user-name@domain-name
레지스트리 편집을 포함하지만 서비스 정보는 다음에서 확인할 수 있습니다.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
리디렉션할 서비스를 찾은 다음ImagePath
하위 키를 누르고 해당 값을 변경합니다.
PowerShell을 사용하여 다음과 같은 작업을 수행할 수도 있습니다.
Get-WmiObject win32_service -filter "Name='My Service'" `
| Invoke-WmiMethod -Name Change `
-ArgumentList @($null,$null,$null,$null,$null, `
"C:\Program Files (x86)\My Service\NewName.EXE")
또는:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
-Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"
Run(win+R)을 열고 "Regedit.exe"를 입력한 다음 "Registry Editor"를 열려면 다음으로 이동합니다.
HKEY_LOCAL_MACHINE\시스템\현재 제어 세트\서비스
"Apache2"를 찾습니다.4" 폴더를 열고 오른쪽에 있는 "ImagePath"를 찾은 다음 "valueData" 아래에 있는 "ImagePath"를 엽니다. 다음 경로를 입력합니다.
"C:\xampp\apache\bin\httpd.exe" -k 다른 사용자용 XAMPP 서비스 실행은 Apache가 설치된 위치를 가리키고 내부에서 "C:(Apache 설치 위치)\bin\httpd.exe" -k runservice
이 @CodeMaker의 답변에 약간의 수정을 가했습니다. 저처럼 MongoDB 서비스를 수정하려는 사람은 누구나 인증을 사용할 수 있습니다.
"서비스"에서 "실행 파일 경로"를 살펴보니 실행된 행에는 이미 음성 표시가 포함되어 있었습니다.그래서 저는 그의 예를 약간 수정해야만 했습니다.
구체적으로 말씀드리자면.
- 윈도우즈에서 서비스 입력
- MongoDB(또는 변경할 서비스)를 찾아 서비스를 열어 서비스를 중지하십시오.
- 표시 이름이 아닌 서비스 이름을 기록합니다.
- "실행 파일 경로"를 찾아 복사한 후 복사합니다.
나에게 그 길은 (말하기 표시에 주의)
"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service
명령줄 유형
sc config MongoDB binPath= "<Modified string with \" to replace ">"
나의 경우에는 이것이
sc config MongoDB binPath= "\"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe\" --config \"C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg\" --service -- auth"
서비스를 실행할 경로를 직접 편집할 수 없습니다.이를 위해 sc 명령을 사용할 수 있습니다.
SC CONFIG ServiceName binPath= "Path of your file"
예:
sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"
따옴표로 느낌이 들었습니다. 지 사 Git Bash 용 해 로 를 나 하 의 따 로 표 야 어 는 고 했 습 다 니 각 다 생 한 묶 옴 나 경 단 위 를 자 ▁i 나습 ▁in ▁you ▁like는▁quotes했니▁path다▁put▁the▁should각▁single▁just▁felt▁for생▁adding▁g고다한it야어묶로▁users' '
에 있어서와 같이
sc config <service name> binPath='<binary path>'
예를 들어sc config MongoDB binPath='"C:\Program Files\MongoDB\Server\5.03\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\5.03\bin\mongod.cfg" --service --auth'
이것은 Windows 10에서 Git Bash로 서비스 경로를 업데이트하는 데 도움이 되었습니다.
프로세스 해커가 설치된 경우 이를 사용할 수 있습니다.
사용하는 대안.Invoke-WmiMethod
최신 CIM cmdlet을 사용합니다.이는 또한 필요성을 방지합니다.@($null,$null...)
이전 답변에서 볼 수 있듯이 개체입니다.
Get-CimInstance win32_service -Filter "Name='My Service'" | Invoke-CimMethod -MethodName Change -Arguments @{PathName="C:\Program Files\My Service\NewName.exe"}
'SC' 명령을 사용하면 모든 '서비스 이름'을 추출하고 'QueryServiceConfig'를 얻을 수 있습니다. :)
>SC QUERY > "%computername%-services.txt" [enter]
>FIND "SERVICE_NAME: " "%computername%-services.txt" /i > "%computername%-services-name.txt" [enter]
>NOTEPAD2 "%computername%-services-name.txt" [enter]
그런 다음 'CMD'를 계속합니다.
>FOR /F "DELIMS= SKIP=2" %S IN ('TYPE "%computername%-services-name.txt"') DO @SC QC "%S" >> "%computername%-services-list-config.txt" [enter]
>NOTEPAD2 "%computername%-services-list-config.txt" [enter]
Raw data(로우 데이터)는 'future batch file(미래 배치 파일)'을 제공할 준비가 되었으므로 결과는 아래와 같습니다!!!
+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| SERVICE_NAME | TYPE | START_TYPE | ERROR_CONTROL | BINARY_PATH_NAME | LOAD_ORDER_GROUP | TAG | DISPLAY_NAME | DEPENDENCIES | SERVICE_START_NAME |
+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
+ WSearch | 10 WIN32_OWN_PROCESS | 2 AUTO_START (DELAYED) | 1 NORMAL | C:\Windows\system32\SearchIndexer.exe /Embedding | none | 0 | Windows Search | RPCSS | LocalSystem |
+ wuauserv | 20 WIN32_SHARE_PROCESS | 2 AUTO_START (DELAYED) | 1 NORMAL | C:\Windows\system32\svchost.exe -k netsvcs | none | 0 | Windows Update | rpcss | LocalSystem |
하지만 HTML이 훨씬 쉬울 것입니다 :D
개선을 위한 모든 밝은 아이디어는 환영합니다. V^_^
이 시나리오에서 가장 좋은 방법은 응용 프로그램을 제거하고 응용 프로그램을 다시 설치하는 것입니다.그것이 올바른 법적 방법입니다.
서비스를 삭제할 수 있습니다.
sc delete ServiceName
그런 다음 서비스를 다시 만듭니다.
언급URL : https://stackoverflow.com/questions/7190480/modifying-the-path-to-executable-of-a-windows-service
'programing' 카테고리의 다른 글
Firebase 3.0에서 사용자를 로그아웃하려면 어떻게 해야 합니까? (0) | 2023.06.10 |
---|---|
ASP.NET MVC에서 페이지화를 수행하려면 어떻게 해야 합니까? (0) | 2023.06.10 |
UI WebView의 현재 URL 가져오기 (0) | 2023.06.05 |
Angular/cli 개발 서버 c9.io 를 실행할 때 "잘못된 호스트 헤더"가 표시됨 (0) | 2023.06.05 |
장고의 aggregate() 대 주석() (0) | 2023.06.05 |