svchost에서 포트를 사용하는 항목 찾기

svchost에서 포트를 사용하는 항목 찾기

컴퓨터를 시작할 때 포트 8000을 사용하는 프로세스를 찾기 위해 다른 대답을 따랐습니다.

Get-Process -Id (Get-NetTCPConnection -LocalPort 8000).OwningProcess

이는 svchost해당 포트를 사용하고 있음을 나타냅니다. 그래서 문제 없이 종료하고 포트 8000에서 실행하고 싶은 것을 실행합니다.

svchost하지만 해당 포트가 시작되는 것을 방지할 수 있도록 해당 포트를 사용하는 방법을 확인할 수 있는 방법이 있습니까 ?

답변1

기본적으로 각 svchost인스턴스는 여러 서비스를 호스팅(또는 호스팅하는 데 사용)합니다. 이것에 대해 읽을 수 있습니다여기. 이런 방식으로는 어떤 서비스가 프로세스 활동을 담당하는지 제대로 결정할 수 없습니다. PowerShell을 사용하여 문제의 프로세스에서 호스팅되는 서비스를 계속 확인할 수 있습니다.

Get-WmiObject Win32_Service -Filter "ProcessId='$PID'"

예를 들어:

PS C:\> Get-WmiObject Win32_Service -Filter "ProcessId='1448'"

ExitCode  : 0
Name      : EFS
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

ExitCode  : 0
Name      : KeyIso
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

ExitCode  : 0
Name      : SamSs
ProcessId : 1448
StartMode : Auto
State     : Running
Status    : OK

ExitCode  : 0
Name      : VaultSvc
ProcessId : 1448
StartMode : Manual
State     : Running
Status    : OK

(이것들은 에서 호스팅되지 않지만 svchost아이디어를 얻을 수 있습니다.)프로세스의 명령줄에서 어떤 서비스인지 항상 알 수는 없습니다.이를 위해서는 서비스 API를 사용해야 합니다.

sc다음을 사용하여 서비스별로 이 멀티 호스팅을 비활성화할 수 있습니다.우우서브, Windows 업데이트 서비스):

sc config wuauserv type= own

그런 다음 다시 확인하여 정확히 어떤 서비스가 담당하는지 확인할 수 있습니다.

다시 다시 전환할 수도 있습니다.

sc config wuauserv type= share

답변2

프로세스 svchost는 시스템 서비스를 실행하는 데 사용됩니다. 어떤 시스템 서비스가 이 포트를 사용하고 있는지 파악한 다음 영구적으로 비활성화하는 것이 좋습니다(유용하지 않은 경우).

프로세스의 명령줄을 보면 이를 찾을 수 있습니다 svchost.exe . 매개 -k변수는 시스템 서비스를 식별합니다.

포트를 사용하는 프로세스 ID를 얻는 방법을 이미 알아냈습니다. 명령줄을 가져오려면 관리자 권한으로 PowerShell을 실행하고 다음 명령을 입력합니다(프로세스 4680의 예).

gcim win32_process | Where-Object {$_.processid -eq 4680} | select commandline

유용한 GUI 유틸리티는 다음과 같습니다. 프로세스 탐색기.

관련 정보