컴퓨터를 시작할 때 포트 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 유틸리티는 다음과 같습니다. 프로세스 탐색기.