C++释放Windows上另一个进程使用的网络端口
C++ Release network port that is used by another process on Windows
编辑:我看不出我的问题有什么问题。这不是重复的,尽管人们指责它是重复的。如果你无论如何决定否决这个问题,请告诉我为什么,这样我就能理解。谢谢
如何强制另一个进程关闭它当前正在使用的端口例如如果Skype正在本地端口80上侦听。如何以编程方式强制Skype再次释放该端口,以便在同一端口上正确运行XAMPP?不更改Skype设置或关闭Skype。
是的,我知道这可能会导致意想不到的行为。
这只是使用DuplicateObject关闭句柄的问题,还是如何完成的问题?
我对关闭进程或找出哪个进程阻塞了端口不感兴趣。我已经知道即使没有netstat,这是如何正确完成的。
编辑:我找到了WSADuplicateSocket,它看起来很有前途。但它必须从已经有微软称之为Descriptor identifying the local socket
的进程中调用。如果我能以某种方式得到Descriptor identifying the local socket
,我可能就能调用closesocket。这可能可以通过come代码注入来完成,但我相信还有更好的方法。
编辑:据称,一个名为CurrPorts
的工具可以做我想做的事情。所以它绝对有可能。。。但是怎么做呢?
从另一个进程访问套接字的正确方法是向调用WSADuplicateSocket()
的进程注入代码,以复制所需的套接字句柄供您的进程访问,然后通过IPC将详细信息发送到您的进程,并通过WSASocket()
访问套接字。参见:
C++处理程序的开放套接字
然而,一种更暴力的方法是使用带有DUPLICATE_CLOSE_SOURCE
标志的DuplicateHandle()
。无需代码注入:
- 查找拥有所需打开端口的进程ID(请参阅
GetTcpTable2()
和GetExtendedTcpTable()
以及其他相关函数) - 使用
OpenProcess()
打开进程ID的句柄 - 通过
NtQuerySystemInformation(SystemHandleInformation)
枚举进程的打开句柄(请参阅HOWTO:枚举句柄),查找打开的套接字对象 - 使用
NtDeviceIoControlFile()
查询每个套接字句柄的IP/端口信息,以确定哪个套接字对象正在使用您想要的端口(请参见套接字句柄) - 然后最后CCD_ 13找到的套接字句柄来关闭它(无需指定将其复制到的目标)
- 我的神经网络不起作用 [XOR 问题]
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- 通过网络、跨平台传递std::变体是否安全
- 如何在MNIST上提高网络运行的准确性
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- c++多进程编写一个唯一的文件
- Windows资源监视器使用哪些Win32函数来检测已终止进程的磁盘和网络活动
- C++释放Windows上另一个进程使用的网络端口
- C、 所有平台中进程的C++CPU使用率和内存使用率+当前时间的可用网络下行链路带宽
- OpenCV:在Linux进程之间共享网络摄像头是可能的吗?
- 网络延迟和应用程序>进程消息()
- 获取当前运行进程的网络适配器
- 如何获取Windows C++中进程(输入:进程ID或句柄)的每秒接收和发送网络字节数?
- 从父进程到子进程的网络摄像头流