Как узнать, какие сетевые профили активны с помощью cmd или пакетного скрипта - PullRequest
2 голосов
/ 08 июня 2019

В реестре Windows здесь:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\

мы можем увидеть список идентификаторов сети с именем сети, как обычно слово Network плюс число, например Network 1 для проводных сетей.

Когда Windows впервые обнаруживает новую сеть, появляется всплывающее окно с вопросом, является ли это местоположение Work, Home или Public. Сделанный вами выбор изменяет Category и Category type в вышеупомянутой записи реестра для этого идентификатора сети.

Я хочу получить Category и Category type для текущего подключенного сетевого профиля. По сути, сообщая мне, является ли сеть, к которой я сейчас подключен, Work, Home или Public.

Я уже знаю, как это сделать с reg query, но я не знаю, как определить, какой из многих сетевых профилей в указанном выше пути реестра является активным, не просматривая их все и не сопоставляя имя сети в текущую сеть.

Я изучил использование wmic path Win32_NetworkAdapter и подумал, что нашел способ, смотрите здесь:

for /f "tokens=*" %%f in ('wmic /node:MYPC path WIN32_NetworkAdapter where "GUID is not null" get GUID /value ^| find "="') do set "%%f"

reg query "\\MYPC\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\%GUID%" /v Category 

Хотя я нашел идентификатор текущей активной сети, используя wmic, используя wmic path WIN32_NetworkAdapter в качестве ключа с именем GUID, так как это был тот же формат, что и идентификаторы сети, которые вы видите в пути реестра, указанном выше .

Поскольку у меня была только одна активная сеть, и приведенная выше команда wmic вернула только одну ненулевую GUID. Но я не нашел возвращенного GUID в списке профилей сети ...

Если я найду способ определить, какой идентификатор подключа / сети в этом пути реестра соответствует моей активной сети, тогда я смогу получить желаемый результат.

Как узнать, какой сетевой профиль используется в настоящее время?

...