Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让Windows服务打开端口?_C#_Windows Services_Port - Fatal编程技术网

C# 如何让Windows服务打开端口?

C# 如何让Windows服务打开端口?,c#,windows-services,port,C#,Windows Services,Port,我想用C#获取窗口服务及其端口的列表。我可以使用ServiceController获取所有窗口服务,但无法获取这些服务的端口。请检查。它与您要求的并不完全相同,但它指向一个名为的有用函数,该函数可以执行您需要的操作。另外,请检查。类似问题的答案总是建议使用Iphlpapi,但还不清楚如何在这个netstat-ban复制粘贴中获得RpcSs(服务名称): TCP 0.0.0.0:135 0.0.0.0.0:0侦听 RpcSs [svchost.exe] 或此处的时间表: TCP[::]:49154

我想用C#获取窗口服务及其端口的列表。我可以使用
ServiceController
获取所有窗口服务,但无法获取这些服务的端口。

请检查。它与您要求的并不完全相同,但它指向一个名为的有用函数,该函数可以执行您需要的操作。另外,请检查。

类似问题的答案总是建议使用Iphlpapi,但还不清楚如何在这个netstat-ban复制粘贴中获得RpcSs(服务名称): TCP 0.0.0.0:135 0.0.0.0.0:0侦听 RpcSs [svchost.exe]

或此处的时间表:

TCP[::]:49154[::]:0正在侦听 日程 [svchost.exe]

我一直在寻找解决办法,但没有找到任何办法。Netstat调用了iphlapi中一些未记录的函数,但不清楚它是从iphlapi获取服务名称,还是以某种方式使用iphlapi中的pid并使用其他内容来获取服务名称。我真的不想花时间用调试器来回答这个问题,因为..:

然而,在理想情况下,人们无论如何都不希望使用C#的轮询方式。使用ETW更合适。我认为缺乏从C#开始使用它的示例是因为开始使用它会有一些开销,并且周围的示例可能特定于其他类型的跟踪/监视场景


小结:如果您没有足够的时间来实现这一点,那么保存netstat输出似乎就是“解决方案”。理想情况下,我希望找到一个简单易用的C#示例来监视任何网络连接,并找出哪些服务或进程处理/启动了这些连接以及可能的防火墙更改。我相信ETW可以做到这两个方面,但就我目前的需求而言,很难证明需要多少时间才能使其正常工作。我至少已经知道“logman查询提供者”列出了提供者,然后您需要做一些事情来启用提供者(在某些情况下还需要驱动程序支持跟踪,比如数据包捕获)。有一个使用ETW的C#项目。但现在还不清楚用ETW复制netstat输出需要付出多大的努力。

在仔细查看之后,我发现MIB\u TCPROW\u OWNER\u模块结构中存在未记录的“OwningModuleInfo”

然后我发现了以下评论:

“我得出结论,数组中的第一项是正在运行的服务列表中服务的索引,…”

因此,这个问题的答案将是使用它来获取netstat-b显示的名称信息(服务名称和地址+端口),过滤您想要的服务。我找到了这个库,除了这个特性之外,它已经设置了很多相关的代码

其他有用的链接: