I am trying to create network map on c# like on this image

I have searched in google a lot but can’t find any library or code sample. I only found ways to do broadcasting on network or get computers names on my domain. But what I need is to get all computers on my network with their names, IP addresses and OSes like in picture. Is there any libraries to this in .Net? There are lots of apps which can do this, some of them are free but no one is open source.
Thanks.
I am trying to create network map on c# like on this image I
Share
As per comments above:
One good approach is to use SNMP for this kind of stuff… there are commercial and free libraries for this… since you want that to be free just the opensource ones (checkout whether the license is compatible with the license you are planning to use):
As per comments:
Docs and examples for snmpsharpnet can be found here and here.