Em C #, como obtenho a lista de nomes de computadores locais, como o que é visualizado na Rede no Windows Explorer

Existem muitas perguntas sobre como obter o nome e os endereços IP da máquina local e várias sobre como obter endereços IP de outras máquinas na LAN (nem todas foram respondidas corretamente). Isto é diferente

No Windows Explorer, se eu selecionar Rede na barra lateral, visualizo as máquinas locais na minha LAN listadas pelo nome da máquina (em qualquer grupo de trabalho do Windows). Como obtenho as mesmas informações programaticamente em C #?

questionAnswers(4)

yourAnswerToTheQuestion