Au vu du post de Sébastien FERRAND, cela m'a étonné qu'il n'y ait pas d'API pour faire ce qu'il souhaitait faire, et en fait il y en a une : Network List Manager.
C'est une API COM qui permet de récupérer les informations liées au centre réseau et partage : est-on connecté sur un réseau public, privé, domaine, ipv4, ipv6, etc. Elle permet aussi de lister tout les réseaux wifi, vpn, etc, auxquels on est ou a été un jour connecté.
Pour l'utiliser en .Net, il faut référencer la typelib COM "Network List Manager 1.0 Type Library" via Add Reference puis :

Ensuite, on peut l'utiliser via la classe NetworkListManagerClass qui possède des accesseurs et aussi des événements pour être notifié des changements.
J'ai fait un micro programme de test, et voici le genre d'information que l'on peut avoir :

(Le code est dans l'attachement de ce message au cas où quelqu'un serait intéressé, c'est sans aucune garantie et à vos risques et périls)
Et heu pour Sébastien, désolé pour le "contre blog"
mais c'est juste pour illustrer l'API officielle, mieux que de lire les clefs de registres 
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :