哪为哥哥懂ASRClean。就是残余驱动清理。到底怎么搞?

发布网友 发布时间:2022-04-23 22:33

我来回答

1个回答

热心网友 时间:2023-09-04 16:45

注册表清理软件ASRClean下载及使用讨论专帖(严禁灌水!)

ASRClean 1.1木鸟定制版下载(更新于2006年6月19日):
[attach]15726[/attach]
这个版本新增了一个功能,详细看/?的使用帮助。另外,这个版本编译时使用了Release选项,可能不再需要MFC运行库的支持。

应ebing同学的要求,将ASRClean及MFC支持库打包上来(暂不包含源程序),ASRClean的支持库文件(DLL文件)可以放到Windows\system32目录下,也可以与ASRClean.exe在同一目录下(或者搜索路径中)。

ASRClean 1.0相关文件下载:
[attach]13717[/attach]

ASRClean 1.0源程序下载:
[attach]146[/attach]

ASRClean使用说明
=====================

由于程序使用了MFC,因此需要MFC的运行库支持(晕啊,本来用VC就是不想要运行库的)。运行库文件如下:
MSVCRTD.DLL
MFC42D.DLL
MSVCP60D.DLL
将上述DLL文件放到%windir%\system32目录下即可。

源代码编译环境: Visual C++ 6.0。

木鸟封装工具ASR Tools配套注册表清理工具 - 版本 1.0
作者:Climbing (xclimbing@gmail.com)
日期:2006年5月15日
版权所有 (C) Climbing 2006.
本程序免费提供使用,但由本程序造成的一切损失,作者概不负责!

CODE:【 点击复制 】
ASRClean [/ASRList:ListFile] [/OtherList:ListFile] [/Delete:ListFile]
[/DeleteDriverFile] [/DriverPath:BirdDriverPath]
[/GenCmd:CmdFile] [/Log:LogFile] [/NoLog] [/NoRegBackup]
[/Quiet] [/?][/h][/help]

参数说明(所有参数不区分大小写):
/ASRList:ListFile
由木鸟提供的加入注册表的ASR设备服务列表文件,默认:ASRList.txt
本程序会检测系统中正在使用的ASR设备服务,并据此将ASRList中没有
使用的其它服务进行删除。
/OtherList:ListFile
除ASR设备外,其它加入注册表的设备服务列表文件,默认:OtherList.txt
本程序会根据服务的ImagePath中是否含有下面的DriverPath来判断该服务是否
正在使用,如果含有,则认为没有使用,将进行删除操作。
/Delete:ListFile
由用户直接提供的需要删除的服务列表文件,本程序将根据该文件直接进行服务
的清除,从而忽略上面两个参数。
/DeleteDriverFile
删除木鸟的ASR Tools所添加的驱动文件,驱动文件路径由下面的参数提供。
注1:原则上不推荐用户删除这些文件,否则有可能造成系统不能启动。
注2:本程序1.0版没有实现直接从程序中删除驱动的操作,只能通过批处理实现。
/DriverPath:BirdDriverPath
木鸟的ASR Tools所添加的驱动文件所在的目录,默认:BIRD。
注意:该目录应该在%windir%\System32目录下。
/GenCmd:CmdFile
生成所有清除操作的批处理文件,默认文件名:ASRClean.cmd。
使用该参数后,本程序将不进行任何清除操作,而是生成对应的批处理文件。
推荐用户使用该参数!本程序默认直接清除,不生成批处理文件。
/Log:LogFile
生成日志文件,默认日志文件名:ASRClean.log。日志文件记录了程序所做的所
有清除操作,这是本程序的默认参数。
/NoLog
不生成日志文件。不推荐用户使用!
/NoRegBackup
不备份要清除的注册表内容。本程序默认备份要清除的注册表的内容,推荐备份!
/Quiet
让本程序静默运行,不产生任何屏幕输出。不推荐用户使用!
/? 或 /h 或 /help
本使用帮助。

命令示例:
1. 程序不加任何参数直接运行,相当于命令行:
ASRClean /ASRList:ASRList.txt /OtherList:OtherList.txt /Log:ASRClean.log

2. 从ASRList.txt及OtherList.txt中输入添加的服务列表,删除驱动文件,将所有
清除操作生成ASRClean.Cmd,不产生用户显示及日志文件。命令行如下:
ASRClean /GenCmd /DeleteDriverFile /NoLog /Quiet

3. 从asr.txt及other.txt中输入添加的服务列表,并生成MyClean.cmd批处理文件,
同时记录程序日志到ASRClean.log中。命令行如下:
ASRClean /ASRList:asr.txt /OtherList:other.txt /GenCmd:MyClean.cmd /log

===================================================================

用xplode调用ASRClean大概是这个样子:

CODE:【 点击复制 】
<item display="? 清除注册表中多余的ASR设备驱动">
<execute display="? 正在清除注册表中多余的ASR设备驱动,请稍候...">
<program>#XPLODE#\ASRClean.exe</program>
<!-- <arguments>/ASRList:ASRList.TXT /OtherList:OtherList.txt /Quiet</arguments> -->
<hide>true</hide>
<wait>true</wait>
<workdir>#XPLODE#</workdir>
</execute>
</item>

上面的#XPLODE#相当于XPLODE所在的目录,默认情况下当然就是C:\ASRTools目录了,你可以根据情况自己定义。

==================================================================

再公布我写的两个批处理,其中的StartCheck.cmd调用CheckSCSI.cmd,二者合作生成一个SCSIToDel.txt。这个TXT文件中保存的就是当前系统中所有的ASR设备服务列表(相当于ASRList.txt,专门为S&R&S封装的系统清理驱动所定制的),在使用S&R&S封装的系统上,使用这两个批处理生成SCSIToDel.txt,然后改名成ASRList.txt,跟ASRClean.exe放在同一目录下,那么ASRClean就可以用来清理使用S&R&S封装的系统中的无效注册表项。 下载链接如下(命名为CheckSCSIServiceList.rar):

打开附件

其实完全可以将上面两个批处理合成一个批处理(总是习惯用老的方式写批处理,其实新方式更简单),信息显示上还有所增强,推荐使用下面的批处理代替上面两个批处理:
CheckScsiServiceList.cmd:检查并输出当前系统中所加载的SCSI设备服务列表

CODE:【 点击复制 】
:: CheckScsiServiceList.cmd 检查并输出当前系统中所加载的SCSI设备服务列表
:: 作者:Climbing (xclimbing@gmail.com)
:: 日期:2006.05.26
:: 注:输出文件可以作为ASRClean的/ASRList输入参数,用于清除死性不改S&R&S系列软件所添加的S&R&S设备驱动注册表项
@echo off
set dstfile=%1
if "%1"=="" set dstfile=SCSIServiceList.txt
if exist %dstfile% del /f /q %dstfile%
for /F "usebackq tokens=5 delims=\" %%I in (`reg query "hklm\SYSTEM\CurrentControlSet\Services"`) do if not %%I#==# call :_CheckSCSI %%I
notepad %dstfile%
goto :eof

:_CheckSCSI
set svc=%1
if %svc%#==# goto :eof
echo Checking %svc%...
reg query "hklm\SYSTEM\CurrentControlSet\Services\%svc%" /v Group 2>nul | find /i "scsi miniport" >nul 2>nul
if %errorlevel%==0 echo !!!Add %svc%!!! && echo %svc%>> %dstfile%

==============================================================
[2006.05.30]先祝大家端午节快乐!

有很多人找我要我清除驱动的批处理,其实我以前都发过,只是没有多少人留意,然后很快被淹没在汪洋大海之中(灌水的毛病真是要不得,什么时候我们的技术论坛没有了灌水习惯那可真是一大进步)。这次我一并将这些东西都公布到这里:

1、sysprep.cmd:放在c:\sysrep目录下,在封装时运行

CODE:【 点击复制 】
@echo off
start /wait msprep.exe
reg export "HKEY_LOCAL_MACHINE\SYSTEM\Setup" sxbgprep.reg
reg add "HKEY_LOCAL_MACHINE\SYSTEM\Setup" /v CmdLine /t REG_SZ /d autohalx.cmd /f

2、autohalx.cmd:放在%windir%目录下,即与死性不改的autohal.exe在同一目录

CODE:【 点击复制 】
:: autohalx.cmd by Climbing(xclimbing@msn.com)
:: Date: 2006.02.17
:: 基于死性不改的S&R&S 9.5.1118而制做,用于在死性不改的autohal.exe与用户之间建立一个接口。
:: 目标:本程序放置于注册表[HKLM\System\Setup]目录下CmdLine这一行,用于替换死性不改设置的autohal /msprep命令,
:: 但本程序运行的最后一步将恢复死性不改的注册表设置,从而实现死性不改的封装程序运行之前为用户设置一个自定义接口。
@echo off

set sys32=%systemroot%\system32
set drives=C D E F G H I J K L M N O P Q R S T U V W X Y Z
set sysprepdir=%systemdrive%\sysprep

:: 复制用户自定义sysprep.inf到c:\sysprep目录
for %%i in (%drives%) do if exist %%i:\sysprep.inf copy /y %%i:\sysprep.inf %sysprepdir% > nul

:: 执行用户自定义的批处理文件,文件名xyfprep.cmd,一般用于清理原系统中的硬件信息
for %%i in (%drives%) do if exist %%i:\xyfprep.cmd call %%i:\xyfprep.cmd

:: 恢复死性不改的注册表设置
regedit /s %sysprepdir%\sxbgprep.reg

3、xyfprep.cmd:放在目标机器克隆系统可访问的任意分区的根目录下(跟自定义的sysprep.inf在一起即可),我这里放出驱动自解压、清理母系统幽灵硬件部分等内容,你可以根据需要任意扩充这个批处理的内容,只要你会写批处理。这个批处理会由前面的autohalx.cmd自动调用执行,可以有多个(即每个分区根目录都可以放一个)。

CODE:【 点击复制 】
@echo off

::驱动自解压
set drivers=e:\drivers.exe
set drvdir=e:\syssoft\drivers\bird
if not exist %drvdir%\. md %drvdir%
"c:\Program Files\winrar\winrar" x -o+ -y %drivers% %drvdir%
%drvdir:~0,2%
cd %drvdir%
call %drvdir%\setdpath.exe
move /y %drivers% %drvdir%

::清除母系统的原机器硬件,需要根据母系统自行定义
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\ACPI /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\FDC /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\HID /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\IDE /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\ISAPNP /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\SERENUM /f
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" | find "VEN" > ~dev2del.txt
if exist ~dev2del.txt for /F "tokens=*" %%i in (~dev2del.txt) do reg delete "%%i" /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\PCIIDE /f
::reg delete HKLM\SYSTEM\CurrentControlSet\Enum\SCSI /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\STORAGE /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\SW /f
reg delete HKLM\SYSTEM\CurrentControlSet\Enum\USB /f
::reg delete HKLM\SYSTEM\CurrentControlSet\Enum\PCI_HAL /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\*PNP0501 /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VGA /f
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\MEDIA /f
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root" | find "*" > ~dev2del.txt
if exist ~dev2del.txt for /F "tokens=*" %%i in (~dev2del.txt) do reg delete "%%i" /f
if exist ~dev2del.txt del /f /q ~dev2del.txt

:: 恢复系统的默认管理共享
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v AutoShareServer /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v AutoShareWks /t REG_DWORD /d 1 /f

::设置Wireless Zero Configuration服务为自动启动
REG ADD "HKLM\SYSTEM\CurrentControlSet\SERVICES\WZCSVC" /v Start /t REG_DWORD /d 1 /f

:: 禁用虚拟光驱Daemon和Alcohol所用的服务,防止产生冲突
REG ADD "HKLM\SYSTEM\CurrentControlSet\SERVICES\a347bus" /v Start /t REG_DWORD /d 4 /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\SERVICES\a347scsi" /v Start /t REG_DWORD /d 4 /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\SERVICES\d346bus" /v Start /t REG_DWORD /d 4 /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\SERVICES\d346prt" /v Start /t REG_DWORD /d 4 /f

[2006.06.07补充内容:]

我觉得有必要讲一下上面这个删除幽灵硬件的批处理(xyfprep.cmd)该如何根据实际情况自己调整(DIY)的方法:

一般来说,在克隆恢复成功后,进入设备管理器,查看隐藏设备(下面讲的那个DEVMGR_SHOW_NONPRESENT_DEVICES环境变量事先已经设置好了),你会在某些设备文件夹下发现幽灵硬件(基本上可以认为这些幽灵硬件都是原系统中的硬件),注意,声音那个文件夹除外。双击幽灵硬件-> 详细信息,你会看到“设备范例ID”,例如:STORAGE\REMOVABLEMEDIA\7&E3F8038&1&RM、或者USBSTOR\....、或者ACPI\...等等,而ID中的STORAGE、USBSTOR、ACPI这些ID信息对应的就是“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum”下相应的文件夹,对于这些硬件ID你可以直接使用reg delete命令删除对应的注册表信息(这就相当于删除了幽灵硬件)。例如:

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\STORAGE\RemovableMedia\7&E3F8038&1&RM" /f

其实你可以发现,STORAGE中保存的都是原机器中的存储卷信息,在新系统中是完全可以删除的,所以你可以直接在批处理中:
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\STORAGE" /f
将它完全删除,而事实上,我的批处理就是这么整理出来的。

====================================================================
[2006.05.31] 查看幽灵硬件的方法

下面提供一下查看幽灵硬件必须设置的DEVMGR_SHOW_NONPRESENT_DEVICES环境变量的js设置脚本:
--------------------------------------------------------------------------------------------------------------------------------------
// DEVMGR_SHOW_NONPRESENT_DEVICES.js 设置环境变量并启用设备管理器查看幽灵硬件
// Author: Climbing (xclimbing@gmail.com)
var shell
shell = WScript.CreateObject("WScript.Shell")
shell.Environment("System").Item("DEVMGR_SHOW_NONPRESENT_DEVICES")='1'
shell.run("devmgmt.msc")
--------------------------------------------------------------------------------------------------------------------------------------

将上面横线中的内容复制并粘贴到一个空白的文件中,保存文件为DEVMGR_SHOW_NONPRESENT_DEVICES.js,双击执行即可。这个脚本设置完成环境变量后,会自动打开设备管理器,记得勾选“查看”菜单中的“显示隐藏的设备”选项。

你自己看吧!

参考资料:www.blogchinese.com/06091/261368

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com