无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 12148|回复: 42
打印 上一主题 下一主题

[求助] 求个有用的批处理,删除所有本地连接x上一级注册表

  [复制链接]
跳转到指定楼层
1#
发表于 2016-6-24 22:47:09 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
也就是清理注册表里无用的网络设置。包括本地连接和本地连接1.2.3.4.56.7.8.9........
来自 2#
 楼主| 发表于 2021-12-10 19:52:52 | 只看该作者
本帖最后由 窄口牛 于 2021-12-10 20:05 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. 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
  4. pushd "%CD%"&& CD /D "%~dp0"
  5. del %temp%\temp.txt /s /q>nul 2>nul
  6. del %temp%\guid.txt /s /q>nul 2>nul
  7. 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
  8. 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)
  9. )
  10. for /f "tokens=1,2 delims==" %%a in ('wmic nic get GUID /value^|findstr "{"') do echo %%b>>%temp%\guid.txt
  11. for /f "delims=" %%a in ('type %temp%\temp.txt^|findstr /v /g:%temp%\guid.txt') do reg delete %%a  /f
  12. del %temp%\temp.txt /s /q>nul
  13. del %temp%\guid.txt /s /q>nul
  14. pause>nul
复制代码
删除多余网络连接.rar (625 Bytes, 下载次数: 25)
回复

使用道具 举报

3#
发表于 2016-6-25 10:15:53 | 只看该作者
本帖最后由 pogua007 于 2016-6-25 10:20 编辑

这个东西我当年搞过,就在我还长为头像上样子,还是用NT4+98的时候,我当时工作那网吧服务公司的无盘母盘客户端,里面硬件信息非常杂,我记亿最深的有40多个显示器20多显卡信息,还有很多杂七杂八的硬件信息,最后我给清理了。我去研究研究回忆回忆。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY是显示器,印象最深,一下找到了。网卡在哪还要找找,就在这附近了,估计HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum能整个清空。
回复

使用道具 举报

4#
发表于 2016-6-25 10:44:48 | 只看该作者
本帖最后由 pogua007 于 2016-6-25 10:49 编辑

尼玛,不查不知道,看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci\CardList,竟然有Intel 82443BX信息,难道微软Windows7也是用虚拟机搞出来的?我系统可是原版ISO安装的系统,我连激活都还没有激活。
找到网卡了,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network下面,不过和协议什么的混在一起,要搜索PnpInstanceID然后判断一下name,根据查找到的PnpInstanceID去删除enum下的数据。
封装程序好象自带这个功能吧,我除了当年封装过2000,后来自用的系统都是安装的。
程序晚上写,现在先去睡觉。你先把你具体想要如何应用,有什么要求,要达到什么样效果说一下,REG QUERY命令返回的数据处理很麻烦,处理注册表VBS搞更简单一点。
回复

使用道具 举报

5#
 楼主| 发表于 2016-6-25 10:46:23 来自手机 | 只看该作者
全表搜索文本“本地连接”然后将上一级,是一个sid值,把这个项全部删除即可。变量不太会玩,所以找高手帮忙出手。

点评

睡觉了,晚上说。如果只删除Network下面的项很简单,不过这并没有清除硬件信息啊。  详情 回复 发表于 2016-6-25 10:54
回复

使用道具 举报

6#
发表于 2016-6-25 10:54:27 | 只看该作者
窄口牛 发表于 2016-6-25 10:46
全表搜索文本“本地连接”然后将上一级,是一个sid值,把这个项全部删除即可。变量不太会玩,所以找高手帮 ...

睡觉了,晚上说。如果只删除Network下面的项很简单,不过这并没有清除硬件信息啊。

点评

这个点,睡什么觉……  详情 回复 发表于 2016-6-25 14:18
回复

使用道具 举报

7#
 楼主| 发表于 2016-6-25 11:29:37 来自手机 | 只看该作者
不存在的本地连接n,和重复设置的IP信息。
回复

使用道具 举报

8#
发表于 2016-6-25 14:18:43 来自手机 | 只看该作者
pogua007 发表于 2016-6-25 10:54
睡觉了,晚上说。如果只删除Network下面的项很简单,不过这并没有清除硬件信息啊。

这个点,睡什么觉……
回复

使用道具 举报

9#
 楼主| 发表于 2016-6-25 17:47:07 | 只看该作者
这样子的,再上一级位置不确定,但多余要删除的就这个样子

捕获.JPG (52.47 KB, 下载次数: 171)

捕获.JPG

点评

如果你只是想删除这里的东西的话。。。  详情 回复 发表于 2016-6-25 21:51
回复

使用道具 举报

10#
 楼主| 发表于 2016-6-25 17:49:57 | 只看该作者
当年求过一个修改网卡的链接速度与全双工的设置的,把它设为最大值就是千兆全双工和百兆全双工,因为那个各个厂商描述不同,最后没有高手弄出来。
回复

使用道具 举报

11#
发表于 2016-6-25 21:51:56 | 只看该作者
本帖最后由 nttwqz 于 2016-6-25 21:58 编辑
窄口牛 发表于 2016-6-25 17:47
这样子的,再上一级位置不确定,但多余要删除的就这个样子


如果你只是想删除这里的东西的话。。。


  1. @echo off
  2. pushd %~dp0
  3. set regpath=HKLM\SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}
  4. echo 清理多余有线和无线连接??&echo.
  5. pause
  6. rem 删除前将注册表备份到当前目录的Network_1_bak.reg
  7. if not exist Network_1_bak.reg reg export %regpath% Network_1_bak.reg
  8. for /f %%a in ('wmic nicconfig where "ipenabled='false'" get settingid ^| findstr "^{"') do echo Y | reg delete "%regpath%\%%a" >nul 2>nul
  9. echo.
  10. echo 清理完毕
  11. echo 若异常或无效果,请导入同目录下的Network_1_bak.reg以恢复原来的注册表
  12. pause
复制代码




应该还有更简单的方式,只不过,目前研究WMIC尚浅,很多东西不好搜,不知道怎么用。

例如,下面这句我想应该是和上面一样的效果,但是不会用,删除失败,还是没这个功能也未可知。

  1. wmic nicconfig where "ipenabled='false'" delete
复制代码
回复

使用道具 举报

12#
 楼主| 发表于 2016-6-25 22:31:54 | 只看该作者
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{29898C9D-B0A4-4FEF-BDB6-57A562022CEE}\Connection]
"Name"="本地连接* 2"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{2CAA64ED-BAA3-4473-B637-DEC65A14C8AA}\Connection]
"Name"="本地连接* 8"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{71F897D7-EB7C-4D8D-89DB-AC80D9DD2270}\Connection]
"Name"="本地连接* 3"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5BF54C7E-91DA-457D-80BF-333677D7E316}\Connection]
"Name"="本地连接* 7"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{29898C9D-B0A4-4FEF-BDB6-57A562022CEE}\Connection]
"Name"="本地连接* 2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{29898C9D-B0A4-4FEF-BDB6-57A562022CEE}\Connection]
"Name"="本地连接* 2"


这不是注册表里所有的,只是一部分,只要是本地连接后面有数字的都需要删除,因为我只有一个网卡。
回复

使用道具 举报

13#
 楼主| 发表于 2016-6-25 22:36:03 | 只看该作者
本帖最后由 窄口牛 于 2016-6-25 22:37 编辑

只要把这些个删除,服务器在设置IP的时候就不会提示说已经有一个网卡分配过这个IP,现在你要为它分配一个别的IP地址吗?还有就是出现,你只有一块网卡,但是显示的是本地连接3或者其他,这时候你把本地链接3之外的都删除,重启电脑再把你的本地连接的数字去掉就好了。
回复

使用道具 举报

14#
发表于 2016-6-25 22:43:37 | 只看该作者
本帖最后由 pogua007 于 2016-6-25 22:56 编辑

我回来了
  1. Set WshShell = CreateObject("WScript.Shell")
  2. Const HKLM = &H80000002
  3. strPath = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
  4. Set oReg = GetObject("Winmgmts:\root\default:StdRegProv")
  5.     oReg.EnumKey HKLM,strPath,entries
  6.     For Each subkey In entries
  7.             strPath1= strPath & "" & subkey
  8.             strPath2= strPath1 & "\Connection"
  9.             oReg.GetStringValue HKLM,strPath2,"PnpInstanceID",strValue
  10.             If IsNull(strValue) = False Then
  11.                     strPath3 = "HKLM\SYSTEM\CurrentControlSet\Enum" & strValue & ""
  12.                     oReg.GetStringValue HKLM,strPath2,"Name",strName
  13.                     delYes=WshShell.PopUp ("找到网络连接: " & strName & vbCrLf & "设备位置:" & strPath3, 0, "是否删除网络设备", 3 + 32)
  14.                     Select Case delYes
  15.                             Case 6
  16.                                     oReg.DeleteKey HKLM,,strPath1 '删除显示的网络设备,Connection子项及上一级{SettingID}
  17.                                 'oReg.DeleteKey HKLM,,strPath2 '删除显示的网络设备,只删除如你楼上所写的Connection子项
  18.                                     'WshShell.RegDelete strPath3 '删除网络设备在Enum中的硬件信息
  19.                             Case 7
  20.                             Case 2 WScript.Quit
  21.                     End Select
  22.             End If
  23.         Next
复制代码

用ipenabled判读不准确,会把虚拟设备都删掉的,用PnpInstanceID判断是否网络设备比较好。
先发出来,我吃过饭再测试是否有删除bug。

点评

其实,我也不晓得那注册表有什么意义,因为原生系统就有,Win8,Win10都有多出来的,而且网络连接那里正常,不晓得怎么弄出来好几个本地连接,不便于测试,也不晓得有没有效果,因为删之前之后都没有重复的……  详情 回复 发表于 2016-6-26 01:26
回复

使用道具 举报

15#
 楼主| 发表于 2016-6-25 23:11:17 来自手机 | 只看该作者
system\第一变量\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\第二变量\Connection]"Name"="第三变量‘’搜索第三变量不等于某值,值等于预设值,删除第二变量的注册表项。
回复

使用道具 举报

16#
 楼主| 发表于 2016-6-25 23:13:08 来自手机 | 只看该作者
第一变量为CurrentControlSet和ControlSet00n,n为整数
回复

使用道具 举报

17#
发表于 2016-6-26 00:09:46 | 只看该作者
只有ControlSet001和ControlSet002吧,还有更多吗?再加上CurrentControlSet只有3个吧,而且是确定的值,直接设置路径就好了,为3个确定的值去枚举反而麻烦。
第三变量不等于某值,值等于预设值,删除第二变量的注册表项,你的意思是保留设定的值,自动删除其他的事吗
回复

使用道具 举报

18#
 楼主| 发表于 2016-6-26 00:33:50 来自手机 | 只看该作者
恩,是的。
回复

使用道具 举报

19#
发表于 2016-6-26 01:26:49 来自手机 | 只看该作者
pogua007 发表于 2016-6-25 22:43
我回来了

用ipenabled判读不准确,会把虚拟设备都删掉的,用PnpInstanceID判断是否网络设备比较好。

其实,我也不晓得那注册表有什么意义,因为原生系统就有,Win8,Win10都有多出来的,而且网络连接那里正常,不晓得怎么弄出来好几个本地连接,不便于测试,也不晓得有没有效果,因为删之前之后都没有重复的……
回复

使用道具 举报

20#
发表于 2016-6-26 02:25:19 | 只看该作者
根据你的需要改好了,自动删除,没有提示,可以设置保留的项目。前一个脚本果然删除有问题,功能相对强大的VBS限制也多,无论是RegDelete,还是WMI的DeleteKey都不能删除带子项的项,所以我下面的脚本使用reg.exe删除项了。
  1. Set WshShell = CreateObject("WScript.Shell")
  2. Const HKLM = &H80000002
  3. strActivenet ="本地连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
  4. Dim strPath(2)
  5. strPath(0) = "CurrentControlSet"
  6. strPath(1) = "ControlSet001"
  7. strPath(2) = "ControlSet002"
  8. Set oReg = GetObject("Winmgmts:\root\default:StdRegProv")
  9. For i = 0 To uBound(strPath)
  10.         strPathA="SYSTEM"  & strPath(i) & "\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
  11.         oReg.EnumKey HKLM,strPathA,entries
  12.         On Error Resume Next ''如果CurrentControlSet/ControlSet001/ControlSet002有项不存在,下面会出错,虽然实际使用中不可能,但是还是处理一下吧。
  13.         For Each subkey In entries
  14.                 strPathA1 = strPathA & "" & subkey
  15.                 strPathA2 = strPathA1 & "\Connection"
  16.                 oReg.GetStringValue HKLM,strPathA2,"PnpInstanceID",strValue
  17.                 If IsNull(strValue) = False Then
  18.                         oReg.GetStringValue HKLM,strPathA2,"Name",strName
  19.                         If InStr(1,strActivenet,strName & ",",1) = 0 Then
  20.                                 strPathB = "HKLM\SYSTEM" & strPath(i) & "\Enum" & strValue
  21.                                 'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "设备位置:" & strPathB ''本行为测试信息,如需测试,请把本行最前的单引号删掉,把下面两行用单引号注释起来,则不会产生操作,只显示找到的数据
  22.                                 WshShell.Run "reg delete HKLM" & strPathA1 & " /f",0 '删除显示的网络设备
  23.                                 WshShell.Run "reg delete " & strPathB & " /f",0 '删除网络设备的硬件信息
  24.                         End If
  25.                 End If
  26.         Next
  27. Next
复制代码
回复

使用道具 举报

21#
 楼主| 发表于 2016-6-26 06:39:23 | 只看该作者
我这里测试,只找到两个蓝牙网络连接。我还在试图修改中
回复

使用道具 举报

22#
 楼主| 发表于 2016-6-26 07:05:03 来自手机 | 只看该作者
批处理我还能马马虎虎改改,vbs几乎玩不了。

点评

我这测试vbox的网卡还有网桥都能找出来。我在虚拟机上设置了好多网卡,然后有删掉也能找出来,不过虚拟机的网卡种类比较单一才两个系列。 你把你现在的注册表传上来我看看,我看看实际应用系统注册表是什么样的。  详情 回复 发表于 2016-6-26 08:45
回复

使用道具 举报

23#
发表于 2016-6-26 08:45:35 | 只看该作者
窄口牛 发表于 2016-6-26 07:05
批处理我还能马马虎虎改改,vbs几乎玩不了。

我这测试vbox的网卡还有网桥都能找出来。我在虚拟机上设置了好多网卡,然后有删掉也能找出来,不过虚拟机的网卡种类比较单一才两个系列。
你把你现在的注册表传上来我看看,我看看实际应用系统注册表是什么样的。
理论上只要是网卡别管是不是虚拟的都会有硬件信息,照你那样子,8个网卡才找到两个,剩下的硬件信息怎么丢的呢,丢了之后还能找什么作为标志都要考虑的。
回复

使用道具 举报

24#
 楼主| 发表于 2016-6-26 09:22:40 | 只看该作者
好的

reg.part01.rar

1010 KB, 下载次数: 3, 下载积分: 无忧币 -2

reg.part02.rar

892.85 KB, 下载次数: 2, 下载积分: 无忧币 -2

点评

你不是把整个system都传给我了吧,你导个net的reg文件就行了  详情 回复 发表于 2016-6-26 09:59
回复

使用道具 举报

25#
发表于 2016-6-26 09:59:34 | 只看该作者

你不是把整个system都传给我了吧,你导个net的reg文件就行了
回复

使用道具 举报

26#
发表于 2016-6-26 10:20:59 | 只看该作者
叹口气,抽根烟,你这注册表是什么版本下的?我系统中,也有本地连接×1,但是是英文名字的Local Area Connection,对了我系统怎么会有Local Area Connection呢,在英文版系统上网络连接就是Local Area Connection,这些虽然也是垃圾,但是应该不需要清理,绝对是微软遗留的,娘的,微软原版系统也是封装过,还不是封装一次,XP里面就没有这些网卡。只能老老实实的检索name了。
回复

使用道具 举报

27#
 楼主| 发表于 2016-6-26 10:27:50 来自手机 | 只看该作者
我的是中文win7sp1旗舰。我也是发现好像原版也有很多垃圾网卡信息。
回复

使用道具 举报

28#
发表于 2016-6-26 10:54:58 | 只看该作者
改好了

  1. Set WshShell = CreateObject("WScript.Shell")
  2. Const HKLM = &H80000002
  3. strActivenet ="本地连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
  4. Dim strPath(2)
  5. strPath(0) = "CurrentControlSet"
  6. strPath(1) = "ControlSet001"
  7. strPath(2) = "ControlSet002"
  8. Set oReg = GetObject("Winmgmts:\root\default:StdRegProv")
  9. For i = 0 To uBound(strPath)
  10.         strPathA="SYSTEM"  & strPath(i) & "\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
  11.         oReg.EnumKey HKLM,strPathA,entries
  12.         On Error Resume Next
  13.         For Each subkey In entries
  14.                 strPathA1 = strPathA & "" & subkey
  15.                 strPathA2 = strPathA1 & "\Connection"
  16.                 oReg.GetStringValue HKLM,strPathA2,"Name",strName
  17.                 If IsNull(strName) = False Then
  18.                         'oReg.GetStringValue HKLM,strPathA2,"Name",strName
  19.                         If InStr(1,strActivenet,strName & ",",1) = 0 Then
  20.                                 oReg.GetStringValue HKLM,strPathA2,"PnpInstanceID",strValue
  21.                                 If IsNull(strValue) = False Then
  22.                                         strPathB = "HKLM\SYSTEM" & strPath(i) & "\Enum" & strValue
  23.                                         'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "设备位置:" & strPathB ''本行为测试,如需测试,把本行最前的单引号删掉,把两行WshShell.Run用单引号注释,则不会产生操作,只显示找到的数据
  24.                                         WshShell.Run "reg delete " & strPathB & " /f",0 '删除网络设备的硬件信息
  25.                                 Else
  26.                                         'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "此设备没有硬件信息,应该是被微软清除之后残留,作用未知,建议备份注册表之后再删除" '''本行也是测试
  27.                                 End If
  28.                                 WshShell.Run "reg delete HKLM" & strPathA1 & " /f",0 '删除显示的网络设备
  29.                         End If
  30.                 End If
  31.         Next
  32. Next
复制代码

那三个ControlSet其实只需要处理CurrentControlSet就可以了,001会在关机的时候被CurrentControlSet覆盖,002是启动菜单的那个最后一次正确配置,在“正确”启动之后被001覆盖,微软的用户登录了就算正确启动了
回复

使用道具 举报

29#
发表于 2016-6-26 10:57:06 | 只看该作者
要测试,就把两行的WshShell.PopUp前的单引号去掉,WshShell.Run前用单引号注释,要运行就反之。
回复

使用道具 举报

30#
 楼主| 发表于 2016-6-26 11:24:29 | 只看该作者
OK
前面修改:
Set WshShell = CreateObject("WScript.Shell")
Const HKLM = &H80000002
strActivenet ="本地连接,""Bluetooth 网络连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
就完美删除垃圾了

点评

中间不要加引号,就左右两端一对引号,每个网络名称后面都要加逗号作为结束的标志。要不instr搜索"本地连接确实"是"本地连接2"中间的字符串  详情 回复 发表于 2016-6-26 11:31
回复

使用道具 举报

31#
发表于 2016-6-26 11:31:27 | 只看该作者
本帖最后由 pogua007 于 2016-6-26 11:43 编辑
窄口牛 发表于 2016-6-26 11:24
OK
前面修改:
Set WshShell = CreateObject("WScript.Shell")


中间不要加引号,就左右两端一对引号,引号的作用是表示这是一个字符串,你多加引号,脚本会出错的。我在每个网络名称后面都要加逗号作为结束的标志。要不instr搜索"本地连接"确实是属于"本地连接2"里面的的字符串。
你理解错误了,每个设备后面,只加逗号,那个引号是我把逗号括起来用的
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-15 22:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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