有很多关于如何在同一台计算机上列出管道的示例(使用管道列表实用程序,或调用ntddl / NtQueryDirectoryFile)。但是,我需要在远程系统(在同一域或工作组)上列出管道。 尝试以编程方式访问“\\< ipaddr> \ Pipe”返回INVALID_HANDLE_VALUE和GetLastError - 123。
( )
感谢任何见解......
答案 0 :(得分:0)
经过一番研究后,我发现命名管道可以跨网络工作,提供正确的安全上下文。例如,如果同一域用户登录了两个工作站,则命名管道正在运行。
不幸的是,我无法找到在不同计算机上列出管道的方法。 C#Directory.GetFiles(@“\ host \ Pipe”)抛出异常“函数不正确”。
所以,我的回答是:无法在Win32中获取不同计算机上的命名管道列表。如果我错了,请纠正我。
我决定实现socket服务器,它将通过TCP提供打开的管道列表。
编辑:后来我在github上找到了PAExec实用程序的源代码。从源头我学习了如何使用WNetOpenEnum / WNetAddConnection2连接到远程\ IPC $并注入我自己的实用程序,返回打开管道列表。