【发布时间】:2016-08-08 18:59:30
【问题描述】:
编辑:我看不出我的问题有什么问题。它不是重复的,即使人们指责它是重复的。如果您仍然决定对该问题投反对票,请告诉我原因,以便我理解。谢谢。
如何强制另一个进程关闭它当前使用的端口。 例如如果 Skype 正在本地侦听端口 80。如何以编程方式强制 Skype 再次释放该端口,以便我可以在同一端口上正确运行 XAMPP?无需更改 Skype 设置或关闭 Skype。
是的,我知道这可能会导致意外行为。
是否只是使用DuplicateObject 关闭句柄的问题,或者它是如何完成的?
我对关闭进程或找出阻塞端口的进程不感兴趣。我已经知道即使没有 netstat 也是如何正确完成的。
编辑:
我发现WSADuplicateSocket 看起来很有希望。但它必须从已经拥有Descriptor identifying the local socket 的进程中调用,正如微软所说的那样。如果我能以某种方式得到Descriptor identifying the local socket,我也许可以就此致电closesocket。这可能可以通过代码注入来完成,但我相信有更好的方法。
编辑:
据称,一个名为CurrPorts 的工具能够完成我想做的事情。所以这绝对是可能的......但是如何?
【问题讨论】:
-
为什么这个标签是c++?强制关闭 Skype。见stackoverflow.com/questions/788348/…
-
您可以在Skype中关闭“使用端口80和443进行其他传入连接”选项。
-
这不是我要求的。我对强制关闭任何进程既不感兴趣,也不希望更改其他应用程序设置。我不回答“为什么用 C++ 标记”的答案。如果您真的认为这个问题值得一票否决,请告诉我原因。你肯定不能指望我在这里提供“我试过的”的代码..
-
您不能认真地期望现代操作系统会为您提供破坏其他进程的工具。
-
哦,是的,我可以。您会看到 DuplicateObject 已经提供了关闭其他进程句柄的功能。这绝对不一定会破坏流程。即使。关闭进程可能会造成与此一样多的损害,甚至可能更多。
标签: c++ windows winapi port winsock