• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

AutoIt3(AU3源码)自动卸载硬件驱动

AutoIT3 奇跡の海 2年前 (2017-08-28) 443次浏览 已收录 0个评论 扫描二维码

AutoIt3(AU3源码)自动卸载硬件驱动

简介说明

AU3自动卸载硬件驱动, 本程序将卸载除计算机电源管理、IDE控制器、PS/2键盘、PS/2鼠标、系统设备之外的所有硬件驱动程序,可以当函数调用了。

AU3源码

#NoTrayIcon

#include <Array.au3>

;============================================================
; 安装过程
;============================================================

;卸载前提示
if MsgBox(4, '驱动自动卸载程序', '本程序将卸载除计算机电源管理、IDE控制器、PS/2键盘、PS/2鼠标、系统设备之外的所有硬件驱动程序,如果您正在使用USB键盘或鼠标,会因为此卸载而失去作用。是否要执行本驱动自动卸载程序?') = 7 Then Exit

;卸载所有设备
CleanDevices()

;============================================================
; 自定义函数
;============================================================

;卸载所有设备
Func CleanDevices()
        ;获取设备列表
        Local $DeviceList = GetDeviceList()
        
        ;卸载设备
        For $i = 1 To $DeviceList[0]
                RunWait('devcon.exe remove ' & $DeviceList[$i], '', @SW_HIDE)
        Next
EndFunc

;获取设备列表
Func GetDeviceList()
        Local $Class, $CurClass
        Local $CurDevice, $CurDeviceName, $LastDeviceName
        Local $i, $j
        
        ;要卸载的设备名称数组(第一个元素存放设备个数)
        Local $DeviceNameList[1]
        $DeviceNameList[0] = 0

        ;不卸载的设备名称
        Local $SkipClass[5]
        $SkipClass[0] = '{4D36E966-E325-11CE-BFC1-08002BE10318}'   ; 计算机电源管
        $SkipClass[1] = '{4D36E96A-E325-11CE-BFC1-08002BE10318}'   ; IDE ATA/ATAPI 控制器
        $SkipClass[2] = '{4D36E96B-E325-11CE-BFC1-08002BE10318}'   ; PS/2键盘
        $SkipClass[3] = '{4D36E96F-E325-11CE-BFC1-08002BE10318}'   ; PS/2鼠标
        $SkipClass[4] = '{4D36E97D-E325-11CE-BFC1-08002BE10318}'   ; 系统设备

        $LastDeviceName = 'FreeSky'

        ;本机设备的注册表位置
        $Class = 'HKLM\SYSTEM\CurrentControlSet\Control\Class\'

        $i = 1
        While True
                ;获取当前硬件 CLASS
                $CurClass = RegEnumKey($Class, $i)
                If @error <> 0 Then ExitLoop
                $i += 1

                ;跳过指定的硬件 CLASS
                If _ArraySearch($SkipClass, $CurClass, 0, 0, 0, 0, 1, 0) <> -1 Then ContinueLoop

                ;获取当前 CLASS 的实际注册表位置
                $CurClass = $Class & $CurClass

                $j = 1
                While True
                        ;获取当前设备名称的完整路径
                        $CurDevice = RegEnumKey($CurClass, $j)
                        If @error <> 0 Then ExitLoop
                        $j += 1
                        $CurDevice = $CurClass & '\' & $CurDevice

                        ;获取当前设备名称
                        $CurDeviceName = RegRead($CurDevice, 'MatchingDeviceId')
                        ;将符合条件(名称存在,且和上一个设备名称不相同)的设备名称添加到设备列表数组中
                        If ($CurDeviceName <> $LastDeviceName) And ($CurDeviceName <> '') Then
                                $DeviceNameList[0] += 1
                                _ArrayAdd($DeviceNameList, $CurDeviceName)
                                $LastDeviceName = $CurDeviceName
                        EndIf
                WEnd
        WEnd

        ;返回搜索到的结果
        Return $DeviceNameList
EndFunc

版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->AutoIt3(AU3源码)自动卸载硬件驱动!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址