如何获取本地网络计算机列表?
我正在尝试获取本地网络计算机的列表。我尝试使用 NetServerEnum
和 WNetOpenEnum
API,但这两个 API 都返回错误代码 6118 (ERROR_NO_BROWSER_SERVERS_FOUND)
。不使用本地网络中的 Active Directory。
最奇怪的Windows资源管理器显示所有本地计算机没有任何问题。
还有其他方法可以获取 LAN 中的计算机列表吗?
I am trying to get a list of local network computers. I tried to use NetServerEnum
and WNetOpenEnum
API, but both API return error code 6118 (ERROR_NO_BROWSER_SERVERS_FOUND)
. Active Directory in the local network is not used.
Most odd Windows Explorer shows all local computers without any problems.
Are there other ways to get a list of computers in the LAN?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您将需要使用 System.DirectoryServices 命名空间并尝试以下操作:
它对我有用。
You will need to use the
System.DirectoryServices
namespace and try the following:It worked for me.
我找到了使用接口 IShellItem 和 CSIDL_NETWORK 的解决方案。我得到了全网络电脑。
C++:使用方法 IShellFolder::EnumObjects
C#:您可以使用 Gong Solutions Shell Library
I found solution using interface IShellItem with CSIDL_NETWORK. I get all network PC.
C++: use method IShellFolder::EnumObjects
C#: you can use Gong Solutions Shell Library
我用它做了一个函数。
SchemaClassName
必须是ComputerI made a function out of it. The
SchemaClassName
has to be Computer这里是使用 LINQ 查询的属性
Here a property that uses a LINQ query
如果您不太喜欢 LINQ 查询样式语法并且还希望将工作组作为选项包含在内,那么对 toddmo 的答案进行了一个小扩展:
A minor extension to toddmo's answer, if you don't really like LINQ query style syntax and want to also include workgroups as an option:
使用 LINQ lambda 语法和非托管资源解析器的解决方案
Solution with LINQ lambda syntax and unmanaged resource resolver