找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 435|回复: 15

清理注册表无效网卡值,查询网卡双工支持,修改为最高链接速度

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 窄口牛 于 2026-6-3 22:01 编辑

@echo off
Setlocal enabledelayedexpansion
reg query HKU\S-1-5-20>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul
pushd "%CD%"&& CD /D "%~dp0"
del %temp%\temp.txt /s /q>nul 2>nul
del %temp%\guid.txt /s /q>nul 2>nul
for /f "tokens=1-3 delims=}" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s^|find "\"') do echo %%a}%%b}>>%temp%\temp.txt
for /l %%a in (1,1,2) do (for /f "tokens=1-3 delims=}" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00%%a\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s^|find "\"') do echo %%a}%%b}>>%temp%\temp.txt)
)
for /f "tokens=1,2 delims==" %%a in ('wmic nic get GUID /value^|findstr "{"') do echo %%b>>%temp%\guid.txt
for /f "delims=" %%a in ('type %temp%\temp.txt^|findstr /v /g:%temp%\guid.txt') do reg delete %%a /f
del %temp%\temp.txt /s /q>nul
del %temp%\guid.txt /s /q>nul
pause>nul


@echo off
Setlocal enabledelayedexpansion
net session >nul 2>&1 || (
    echo 正在请求管理员权限...
    echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
    cscript //b "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs" >nul 2>&1
    exit /b
)
for /f "delims=" %%v in ('
    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|
    findstr /i "\\\*SpeedDuplex\\enum" ^|
    findstr /v "NdiExt"
') do (
    set "enum_path=%%v"
    set "adapter_path=!enum_path:\Ndi\Params\*SpeedDuplex\enum=!"
    set "adapter_name="
    for /f "tokens=2,*" %%A in ('
        reg query "!adapter_path!" /v DriverDesc 2^>nul ^| find "REG_SZ"
    ') do (
        set "adapter_name=%%B"
    )
    if defined adapter_name (
        echo [网卡实例] !adapter_path:~-4!
        echo [完整名称] !adapter_name!
        echo [支持模式]:
        for /f "tokens=2,*" %%a in ('
            reg query "!enum_path!" ^| findstr /i "[0-9][0-9]* "
        ') do (
            echo   %%b
        )
        echo ========================================
    )
)

echo 扫描完成
pause


@echo off
Setlocal enabledelayedexpansion
net session >nul 2>&1 || (
    echo 正在请求管理员权限...
    echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
    cscript //b "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs" >nul 2>&1
    exit /b
)
set "backup_reg=%temp%\nic_config_%random%.reg"
echo 正在创建注册表备份...
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" "%backup_reg%" >nul
:main
for /f "delims=" %%a in ('
    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s 2^>nul ^
    ^| findstr /i /r "\\\*SpeedDuplex$" ^
    ^| findstr /v "NdiExt"
') do (
    call :process_speed_setting "%%a"
)
echo;
echo 操作完成! 备份位置: %backup_reg%
pause
exit /b
:process_speed_setting
set "speed_key=%~1"
set "adapter_path=%~1"
set "adapter_path=!adapter_path:\Ndi\Params\*SpeedDuplex=!"
set "adapter_path=!adapter_path:\Ndi\params\*SpeedDuplex=!"
set "adapter_name=未知网卡"
for /f "tokens=1,2*" %%b in ('
    reg query "!adapter_path!" /v DriverDesc 2^>nul ^| findstr /i "REG_SZ"
') do (
    set "name_part=%%d"
    set "name_part=!name_part:    = !"       :: 替换制表符为空格
    set "adapter_name=%%c !name_part!"       :: 合并名称成分
    set "adapter_name=!adapter_name:  = !"   :: 压缩连续空格
)
set "adapter_name=!adapter_name:REG_SZ=!"
set "adapter_name=!adapter_name:  =!"
set "adapter_name=!adapter_name: (Microsoft)=!"
set "best_value=0"
set "max_speed=0"
for /f "tokens=1,2*" %%n in ('
    reg query "%speed_key%\enum" 2^>nul ^| findstr /r "^[ ]*[0-9]"
') do (
    set "num=%%n"
    set "mode=%%p"
    if "!mode!"=="自动协商" set "mode=Auto"
    if "!mode!"=="自动侦测" set "mode=Auto"
    set "speed=0"
    for /f "tokens=1,2 delims= " %%a in ("!mode!") do (
        if "%%A"=="100Gb" (
            set "speed=100000"
            set "duplex=%%b"
        )
        if "%%A"=="50Gb" (
            set "speed=50000"
            set "duplex=%%b"
        )
        if "%%A"=="40Gb" (
            set "speed=40000"
            set "duplex=%%b"
        )
        if "%%A"=="25Gb" (
            set "speed=25000"
            set "duplex=%%b"
        )
        if "%%A"=="10Gb" (
            set "speed=10000"
            set "duplex=%%b"
        )
        if "%%A"=="5Gb" (
            set "speed=5000"
            set "duplex=%%b"
        )
        if "%%A"=="2.5Gbps" (
            set "speed=2500"
            set "duplex=%%b"
        )
        if "%%a"=="1.0" (
            set "speed=1000"
            set "duplex=%%b"
        ) else (
            set "speed=%%a"
            set "duplex=%%b"
        )
    )
    set "speed=!speed:Mbps=!"
    set /a "speed=!speed:.=!" 2>nul
    if "!duplex!"=="全双工" set /a "priority+=100"
    if "!duplex!"=="Full" set /a "priority+=100"
    if !priority! gtr !max_speed! (
        set "max_speed=!priority!"
        set "best_value=!num!"
    )
)
if !best_value! gtr 0 (
    echo 正在配置: !adapter_name!
    reg add "%speed_key%" /v Default /t REG_SZ /d "!best_value!" /f >nul
    echo [成功] 已设置默认值: !best_value! (!mode!)
)
set "target=已连接"
set "adapterList="
set "count=0"
echo 正在扫描所有网络适配器...
for /f "tokens=1,2,3,*" %%a in ('netsh interface show interface ^| findstr /i /c:"%target%"') do (
    set /a count+=1
    set "adapter[!count!]=%%b"
    set "desc[!count!]=%%d"
)
if !count! lss 1 (
    echo 未找到名称包含 [%target%] 的网络适配器
    pause
    exit /b
)
echo 找到 !count! 个匹配项:
for /l %%i in (1,1,!count!) do (
    echo %%i [名称: !adapter[%%i]!] [描述: !desc[%%i]!]
)
echo.
for /l %%i in (1,1,!count!) do (
echo 正在处理适配器: !adapter[%%i]
echo.
netsh interface set interface "!adapter[%%i]!" disable
if %errorLevel% equ 0 (
    echo 已禁用适配器
) else (
    echo 禁用失败
    pause
    exit /b
)
timeout /t 5 /nobreak >nul
netsh interface set interface "!adapter[%%i]!" enable
if %errorLevel% equ 0 (
    echo 已重新启用适配器
) else (
    echo 启用失败
    pause
    exit /b
)
)
echo ========================================
exit /b

网卡.rar (2.82 KB, 下载次数: 55)




发表于 3 天前 | 显示全部楼层
这个脚本很实用!之前遇到过换了网卡后注册表残留旧网卡信息导致网络配置混乱的问题。清理无效网卡值和设置双工模式一步到位,省了不少手动排查的时间。提个小建议,如果能把无线网卡也加进去就更全面了。
回复

使用道具 举报

发表于 3 天前 来自手机 | 显示全部楼层
感谢分享辛苦了
回复

使用道具 举报

发表于 前天 01:20 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 前天 05:39 | 显示全部楼层
进来学习
回复

使用道具 举报

发表于 前天 07:03 | 显示全部楼层
无线网卡也加进去就更全面了。
回复

使用道具 举报

发表于 前天 07:09 | 显示全部楼层
无线网卡也要清理
回复

使用道具 举报

发表于 前天 07:29 | 显示全部楼层
强大,感谢
回复

使用道具 举报

发表于 前天 08:17 | 显示全部楼层
这个有用,感谢分享!
回复

使用道具 举报

发表于 前天 08:19 | 显示全部楼层
强大的工具
回复

使用道具 举报

发表于 前天 08:25 来自手机 | 显示全部楼层
感谢大佬,收藏起来
回复

使用道具 举报

发表于 前天 08:25 | 显示全部楼层
感谢分享!学习了!
回复

使用道具 举报

发表于 前天 09:54 | 显示全部楼层
这个脚本很实用!之前遇到过换了网卡后注册表残留旧网卡信息导致网络配置混乱的问题。清理无效网卡值和设置双工模式一步到位,省了不少手动排查的时间。提个小建议,如果能把无线网卡也加进去就更全面了
回复

使用道具 举报

发表于 前天 13:48 | 显示全部楼层
最高链接速度是每個人都要的,感謝分享
回复

使用道具 举报

发表于 昨天 20:26 | 显示全部楼层
本帖最后由 redyear2026 于 2026-6-5 20:57 编辑

    千兆有线网卡跑满速肯定要有赖于光猫,路由和网线这条全链路均能支持千兆传输能力,否则优化其中某一环节毫无意义。
    千兆有线网卡若被强制挂档最高速,应该要同时调整其上游设备,或路由或光猫的默认设置与之同步。
    家用光猫的出厂默认设置均为‘自动协商’,很难被用户修改,而家用路由一般都要外接几个设备,且不一定都是千兆,故也只能采用默认的‘自动协商’,以便与每个外接的下游设备彼此通过‘自动协商’的方式尽可能取得满速,这也应是家用路由默认选择‘自动协商’的底层逻辑吧。
    因此,仅当千兆有线网卡的上游设备如路由器全接千兆设备或仅接一个千兆有线网卡,且彼此均锁定千兆网速,才有可能相安无事,实测过这种极限设置与彼此用‘自动协商’所得结果相差很小。
    对于一般家用,千兆有线网卡在全链路硬件至少为同级的实况下,保持‘自动协商’的默认设置,应该是比较稳妥周全的选择。
回复

使用道具 举报

发表于 昨天 20:58 | 显示全部楼层
我的网线每天都会不定时的断一下,马上又连上,请问,如何确定是win11的问题还是路由器的问题?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-6-6 05:51

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表