2012-10-15 2 views

답변

0

비슷한 질문에 대한 답변은 항상 Iphlpapi를 사용하여 제안하지만이 netstat -ban 복사 붙여 넣기에서 RpcSs (서비스 이름)를 얻는 방법에 대해서는 분명하지 않습니다. TCP 0.0.0.0:135 0.0.0.0:0 RPCSS를 듣기 [svchost.exe 파일]

또는 여기에 일정 : 나는 보았다 0 듣기 일정 [svchost.exe 파일]

:

TCP [::] : 49154는 [::] 이것을 해결하고 지느러미를 만들지 않았다. 무엇이든 (- 쉽다). Netstat은 Iphlpapi에서 일부 문서화되지 않은 함수를 호출하지만 Iphlpapi에서 서비스 이름을 가져 오는지 또는 Iphlpapi의 pid를 사용하는지 여부는 명확하지 않으며 서비스 이름을 얻기 위해 다른 것을 사용합니다. 나는 디버거로 이것을하기 위해 시간을 보내고 싶지 않다. :

그러나 이상적으로 C#의 폴링 스타일 접근법을 사용하지 않는 것이 이상적이다. ETW를 사용하는 것이 더 적절할 것입니다. C#에서 사용하는 예제가 없다고 생각합니다. 시작하기에 약간의 오버 헤드가 있기 때문이며 예제는 추적/모니터링 시나리오의 다른 유형에만 해당 될 수 있습니다.

요약 : 이것을 구현하는 데 시간이 부족한 경우 netstat 출력을 저장하는 것이 "솔루션"인 것 같습니다. 이상적으로는 C# 예제를 사용하여 네트워크 연결을 모니터링하고 가능한 방화벽 변경 사항과 함께 어떤 서비스 또는 프로세스가 처리/시작되었는지를 간단하게 파악하고 싶었습니다. 나는 ETW와 함께 할 수 있다고 믿지만, 현재 필요로하는 것은 알 수없는 양의 시간을 정당화하기 위해 노력하는 것입니다. 나는 적어도 "Logman 쿼리 공급자"가 공급자를 나열했다는 것을 알아 냈습니다. 그런 다음 공급자를 활성화하고 패킷 캡처와 같은 일부 경우 추적을위한 드라이버 지원을 활성화해야합니다. ETW를 사용하기위한 C# 프로젝트가 있습니다. 그러나 ETW로 netstat 출력을 재현하는 것이 얼마나 많은 노력을 기울 였는지는 분명하지 않습니다.

1

주위를 둘러보고 난 후에 MIB_TCPROW_OWNER_MODULE 구조체에 문서화되지 않은 "OwningModuleInfo"가 있다는 것을 발견했습니다.

은 그 때 나는이 댓글을 발견 찾고 :

Weird issue regarding GetOwnerModuleFromTcpEntry when targeting x64

"나는 배열의 첫 번째 항목은 서비스를 실행 목록에서 서비스의 인덱스 결론에 도달했습니다 .. . "

질문에 대한 대답은 netstat -b가 보여주는 이름 정보 (서비스 이름 및 주소 + 포트)를 사용하여 원하는 서비스를 필터링하는 것입니다. 이 https://github.com/Loriowar/IpHlpApidotnet lib이이 기능을 제외하고 관련 코드가 이미 설정되어 있음을 발견했습니다.

기타 유용한 링크 :

Marshalling Struct with Array of Struct Member

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366911(v=vs.85).aspx

관련 문제