WMI для запроса активных сетей и ассоциированных соединений - PullRequest
2 голосов
/ 01 сентября 2011

Мне нужно изменить настройки сети, как описано в этой статье .Это работает хорошо до сих пор.Однако мне также нужно знать, в какой активной сети я делаю изменения.

(Для лучшего понимания, пожалуйста, откройте Control Panel\Network and Internet\ Network and Sharing Center. К сожалению, все хостинги изображений заблокированы моей компанией, поэтому я не могу опубликовать скриншот.)

Любая помощь о том, как я могу сделать запроскакое соединение связано с какой сетью с WMI (или другой технологией)?

ОБНОВЛЕНИЕ:
Мне нужно запросить удаленный компьютер.

1 Ответ

5 голосов
/ 11 сентября 2011

Вы можете использовать NetworkListManager COM-компонент, либо с динамическим, как показано ниже, либо с помощью Windows API Code Pack , который содержит все оболочки COM.

dynamic networkListManager = Activator.CreateInstance(
     Type.GetTypeFromCLSID(new Guid("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")));

var connections = networkListManager.GetNetworkConnections();
foreach (var connection in connections)
{
    var network = connection.GetNetwork();
    Console.WriteLine("Network Name: " + network.GetName());
    Console.WriteLine("Network Category " + 
        network.GetCategory()+ " (0 public / 1 private / 2 Authenticated AD)" );

}

PowerShell:

$networkType = [Type]::GetTypeFromCLSID('DCB00C01-570F-4A9B-8D69-199FDBA5723B')
$networkListManager = [Activator]::CreateInstance($networkType)

$netWorks = $networkListManager.GetNetworkConnections()

foreach ($network in $netWorks)
{
    $name = $network.GetName()
    $category = $network.GetCategory()

    write-host "Network Name: $name"
    write-host "Network Category: $category"
}
...