如何通过 cmd 或批处理脚本查找哪些网络配置文件处于活动状态

Nol*_*anr 5 windows networking batch-file wmic

在 Windows 注册表中:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\
Run Code Online (Sandbox Code Playgroud)

我们可以看到一个带有网络名称的网络 ID 列表,通常是单词 Network 加上一个数字,例如Network 1有线网络。

当Windows第一次检测到新的网络你会得到一个弹出询问你,如果这一个WorkHomePublic位置。你做出的选择改变Category,并Category type在该网络ID上述注册表项。

我想检索CategoryCategory type当前连接的网络配置文件。基本上是告诉我我现在连接的网络是Work,Home还是Public

我已经知道如何使用 a 来执行此操作,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 
Run Code Online (Sandbox Code Playgroud)

我虽然通过使用找到了当前活动网络的 ID,但wmic使用wmic path WIN32_NetworkAdapter作为键调用,GUID因为它与您在上面指定的注册表路径中看到的网络 ID 的格式完全相同。

因为我只有一个活动网络并且上面的 wmic 命令只返回一个非 null GUID。但是我GUID在网络配置文件列表中没有找到返回的...

如果我能找到一种方法来确定该注册表路径中的哪个子项/网络 ID 对应于我的活动网络,那么我就可以获得我想要的结果。

如何找出当前正在使用的网络配置文件?

Hac*_*koo 3

请参阅提取网络配置文件并仅在 txt 文件中显示网络配置文件描述

你可以尝试这样的事情:

@echo off
Title GET GUID NETWORK PROFILES
Mode 70,5 & color 0A
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >nul 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO              **************************************
ECHO               Running Admin shell... Please wait...
ECHO              **************************************

    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
::::::::::::::::::::::::::::
::          START         ::
::::::::::::::::::::::::::::
Mode 90,20 & color 0A
SetLocal EnableExtensions DisableDelayedExpansion
(Set k=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles)
For /F "Delims==" %%A In ('Set GUID[ 2^>Nul') Do Set "%%A="
Set "i=101"
For /F "Tokens=1,2*" %%A In ('Reg Query "%k%" /S /V Description') Do (
    If "%%~nB" NEQ "%%~B" (
        Call Set "GUID[%%i:*1=%%]=%%~nB"
    ) Else (
        Call Call Set GUID[%%i:*1=%%]="%%%%GUID[%%i:*1=%%]%%%%","%%C"
        Set/A i+=1
    )
)
If %i% NEQ 101 (Set GUID[) |findstr /r "{[ABCDEF0123456789][ABCDEF0123456789-][ABCDEF0123456789-]*" 
If %i% NEQ 101 (>"%~dp0NetProfs.txt" 2>Nul Set GUID[ |findstr /r "{[ABCDEF0123456789][ABCDEF0123456789-][ABCDEF0123456789-]*")
EndLocal
pause & exit
Run Code Online (Sandbox Code Playgroud)