Chcę uzyskać listę usług okien i ich portów w języku C#. Jestem w stanie uzyskać wszystkie usługi okna przy użyciu ServiceController
, ale nie mogę uzyskać portów tych usług.Jak mogę otworzyć porty przez usługę Windows?
Odpowiedz
Proszę sprawdzić this question on stackoverlow. Nie jest dokładnie taki sam, jak pytasz, ale wskazuje na użyteczną funkcję o nazwie GetExtendedTcpTable available through PInvoke, która może zrobić to, czego potrzebujesz. Sprawdź także this one.
Odpowiedzi na podobne pytania zawsze proponują użycie Iphlpapi, ale nie jest jasne, jak można uzyskać RpcSs (nazwa usługi) w tym pliku netstat -ban kopii kopii: TCP 0.0.0.0:135 0.0.0.0:0 SŁUCHAJĄCA RpcSs [svchost.exe]
Albo Harmonogram tutaj:
TCP [::]: 49.154 [::]: 0 ODBIORU Harmonogram [svchost.exe]
Spojrzałem za rozwiązanie tego i nie płetwa d coś (-łatwo). Netstat wywołuje pewne nieudokumentowane funkcje w Iphlpapi, ale nie jest jasne, czy pobiera nazwę usługi od Iphlpapi, czy w jakiś sposób używa pid z Iphlpapi i używa czegoś innego, aby uzyskać nazwę usługi. Nie mam ochoty spędzać czasu z debuggerem, aby odpowiedzieć na to pytanie, ponieważ:
Jednak najlepiej byłoby nie chcieć korzystać z podejścia pollingowego z C#. Bardziej odpowiednie byłoby stosowanie ETW. Myślę, że brak przykładów użycia go z C# jest, ponieważ jest trochę narzutów, aby zacząć z nim i przykłady wokół mogą być specyficzne dla innego typu scenariuszy śledzenia/monitorowania.
Podsumowanie: Jeśli nie masz czasu na wdrożenie, po prostu zapisanie wyniku netstat wydaje się być "rozwiązaniem". Idealnie chciałbym znaleźć prosty w użyciu przykład C# do monitorowania jakichkolwiek połączeń sieciowych i ustalenia, jakie usługi lub procesy obsłużyły/zainicjowały je wraz z możliwymi zmianami firewalla. Wierzę, że robienie obu jest możliwe przy ETW, ale dla moich aktualnych potrzeb trudno uzasadnić nieznaną ilość czasu potrzebnego, aby to zadziałało. Na co najmniej zorientowałem się, że "dostawcy zapytań loga" wymieniają dostawców, to musisz zrobić coś, aby włączyć dostawcę (i obsługę sterowników do śledzenia w niektórych przypadkach, np. Przechwytywanie pakietów). Jest projekt C# do korzystania z ETW. Ale nie jest wcale jasne, ile wysiłku będzie polegało na odtworzeniu wyjścia netstat za pomocą ETW.
Po długim rozejrzeniu się stwierdziłem, że w strukturze MIB_TCPROW_OWNER_MODULE istnieje nieudokumentowane "OwningModuleInfo".
Następnie poszukuje że znalazłem ten komentarz:
Weird issue regarding GetOwnerModuleFromTcpEntry when targeting x64
„doszedłem do wniosku, że pierwszy element w tablicy to indeks usługi na liście usług działa .. . "
Tak więc odpowiedź na to pytanie polegałaby na użyciu tego, aby uzyskać informacje o nazwie, które pokazuje netstat -b (nazwa usługi i adres + port), filtrowanie żądanej usługi. Znalazłem tę bibliotekę https://github.com/Loriowar/IpHlpApidotnet, która ma już zestaw powiązanych kodów z wyjątkiem tej funkcji.
Inne przydatne linki:
Marshalling Struct with Array of Struct Member
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366911(v=vs.85).aspx
- 1. Jak programowo zatrzymać usługę Windows
- 2. Jak mogę uzyskać wolne porty USB wC#?
- 3. Jak stworzyć usługę Windows Seler?
- 4. Jak przekazywać typy związków przez porty Wiązów?
- 5. Różne porty używane przez konsula
- 6. Jak mogę wyświetlić moją usługę systemu Windows na pasku zadań?
- 7. Jak prawidłowo zatrzymać wielowątkową usługę Windows .NET?
- 8. Jak zainstalować plik node.js jako usługę Windows?
- 9. Jak mogę otworzyć określone numery portów w systemie Windows
- 10. Android: jak uzyskać intencję odebraną przez usługę?
- 11. Jak zainstalować usługę Windows za pomocą Inno Setup?
- 12. Jak utworzyć usługę Windows z słoika Java?
- 13. Jak otworzyć wybrane przez JavaScript?
- 14. Nie można otworzyć phpMyAdmin (Windows)
- 15. Jak mogę otworzyć zdalny plik przez HTTP za pomocą Emacsa?
- 16. Czy mogę hostować (samodzielnie hostować) usługę WCF w usłudze systemu Windows i udostępniać ją przez http?
- 17. lsof wydrukuj numeryczne porty
- 18. Jak otworzyć Eksploratora Windows po kliknięciu przycisku?
- 19. Uruchomić usługę Windows i uruchomić cmd
- 20. Jak mogę otworzyć kontener debianowy docker?
- 21. Jak publikować porty w plikach dokowania
- 22. Jak zainstalować usługę Windows .NET bez InstallUtil.exe vb.net
- 23. Jak utworzyć usługę Windows w języku C/C++?
- 24. Przekierowanie stdout + stderr na usługę C# Windows
- 25. dlaczego mogę otworzyć undef?
- 26. Jak mogę uruchomić emulatora Windows 8 Phone przez VirtualBox?
- 27. Jak mogę wdrożyć moją usługę WCF bez usług IIS?
- 28. Jak zużywać usługę SOAP przez HTTPS w języku C#?
- 29. Czy porty docelowe i źródłowe SSH są identyczne (porty symetryczne)?
- 30. Jak utworzyć usługę Windows dla Mac OS X?
masz na myśli portów TCP/UDP? –
Tak, porty TCP/UDP –