IT story

Windows 서비스의 "실행 파일 경로"수정

hot-time 2020. 4. 8. 08:01
반응형

Windows 서비스의 "실행 파일 경로"수정


내 응용 프로그램의 경로를 수정하고 싶지만 서비스가 여전히 이전 위치를 가리 키기 때문에 경로가 손상됩니다.

로 이동 Administrative Tools > Services하면 속성 대화 상자를 열고를 볼 수 Path to executable있지만 변경할 수는 없습니다.

사용자가 응용 프로그램을 다시 설치하지 않고도 서비스 경로를 수정할 수있는 방법이 있습니까?


또한이 슈퍼 유저에 볼이 방법 용도 sc레지스트리를 수정하는 명령 줄을 대신은 :

sc config <service name> binPath= <binary path>

참고 : 뒤에 공백 binPath=이 중요합니다. 다음을 사용하여 현재 구성을 쿼리 할 수도 있습니다.

sc qc <service name>

다음과 유사한 출력이 표시됩니다.

[SC] QueryServiceConfig 성공

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"를 입력 한 다음 "레지스트리 편집기"를 열고

HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ 서비스

" Apache2.4 "찾기 폴더를 열고 오른쪽에서 " ImagePath "를 찾고 " value Data " 아래에서 "ImagePath"를 엽니 다 . 다음 경로를 입력하십시오.

"C : \ xampp \ apache \ bin \ httpd.exe"-k runservice foe XAMPP는 Apache가 설치된 위치를 가리키고 내부에서 bin 폴더 "C : (Apache가 설치된 위치) \ bin \ httpd.exe"를 찾습니다. -k runservice


서비스 실행 경로를 직접 편집 할 수 없습니다. 이를 위해 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"

서비스를 삭제할 수 있습니다 :

sc delete ServiceName

그런 다음 서비스를 다시 작성하십시오.


'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]

'작은'NOTEPAD2 편집을 수행하십시오. 'SERVICE_NAME :', CTRL + H를 선택하고 '모두 바꾸기'를 클릭하십시오. 'CMD'내에서 '모두 바꾸기'를 수행 할 수 있다고 상상해보십시오

그런 다음 '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]

'우리 기계에 대한 서비스'입니다 원시 데이터는 '미래 배치 파일'을 공급할 준비가되었으므로 결과는 다음과 같습니다.

+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| 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 ^ _ ^

참고 URL : https://stackoverflow.com/questions/7190480/modifying-the-path-to- executable-of-a-windows-service

반응형