找回密码
 加入
搜索
查看: 1236|回复: 9

关于一段磁盘免疫~~

[复制链接]
发表于 2009-7-31 11:46:31 | 显示全部楼层 |阅读模式
本帖最后由 boyhong 于 2009-7-31 14:00 编辑

各位朋友:
      如下执行失败,很困惑,关于 IF  NOT $disk1[$i]= "a:" Or $disk1[$i]= "A:" Then...是因为不排除软驱的话,在有软驱的电脑上会执行失败的~~~我的测试环境是虚拟机XP3.
               先谢谢大家了~~~

$disk1 = DriveGetDrive("ALL")
        If Not $disk1 = "" Then
                For $i = 1 To $disk1[0]
                IF  NOT $disk1[$i]= "a:" Or $disk1[$i]= "A:" Then
                        If FileExists($disk1[$i] & "\autorun.inf") Then
                                FileSetAttrib($disk1[$i] & "\autorun.inf", "-RSh")
                                $exe = IniRead($disk1[$i] & "\autorun.inf", "AutoRun", "open", "1")
                                If $exe <> 1 Then FileSetAttrib($disk1[$i] & "\" & $exe, "-RSh")
                                FileDelete($disk1[$i] & "\" & $exe)
                                FileDelete($disk1[$i] & "\autorun.inf")
                    EndIf
                        $mianyiok=DirCreate($disk1[$i] & "\autorun.inf")
                        If($mianyiok = 1) Then
                        RunWait(@ComSpec & ' /c md ' & $disk1[$i] & '\autorun.inf\病毒免疫专用..\', '', @SW_HIDE)
                        FileSetAttrib($disk1[$i] & "\autorun.inf", "+SHR")
                        RunWait("cmd /c echo Y|cacls.exe " & $disk1[$i] & "\autorun.inf /P everyone:N", "", @SW_HIDE)       
                        MsgBox(4096,"本机 硬盘 第"&$i&"个驱动器 " , "已成功对:"&$disk1[$i]&"进行了杀防 U 盘病毒的免疫",1)
                        EndIf
                EndIf
                Next
        EndIf
发表于 2009-7-31 12:23:20 | 显示全部楼层
IF NOT $disk1[$i]= "a:" Or $disk1[$i]= "A:" Then
改成
if $disk1[$i] <>"a:" and $disk1[1] <>"A:" then
试试.
 楼主| 发表于 2009-7-31 12:47:40 | 显示全部楼层
1# boyhong

谢谢楼上的朋友,刚才我做了试验如下:

    $disk1 = DriveGetDrive("FIXED")
     MsgBox(4096,"状态",$disk1)
我晕~~~竟然是空值~~~~失败返回????怎么可能???BUG吗????????

没办法,更换了判断方法,解决了这个问题,我的解决方法是:
        For $i = 1 To $disk1[0]
                $vardisk = DriveStatus($disk1[$i])
                If $vardisk = "READY" Then
                                            ..............................

当然,您要是帮我确认一下是不是存在这个故障~~~那十分感谢~~~
后注:我的环境是:AUTOIT_3.3.0.0-3.exe 本坛汉化版
 楼主| 发表于 2009-7-31 12:49:08 | 显示全部楼层
有朋友确认完或者解释一下这个问题后..我将及时结贴~~~感谢大家~~~
发表于 2009-7-31 13:19:57 | 显示全部楼层
本帖最后由 afan 于 2009-7-31 14:20 编辑
$disk1 = DriveGetDrive("ALL")
For $i = 1 To $disk1[0]
        $vardisk = DriveStatus($disk1[$i])
        If $vardisk = 'READY' Then 
                If FileExists($disk1[$i] & "\autorun.inf") Then
                        FileSetAttrib($disk1[$i] & "\autorun.inf", "-RSh")
                        $exe = IniRead($disk1[$i] & "\autorun.inf", "AutoRun", "open", "1")
                        If $exe <> 1 Then FileSetAttrib($disk1[$i] & "" & $exe, "-RSh")
                        FileDelete($disk1[$i] & "" & $exe)
                        FileDelete($disk1[$i] & "\autorun.inf")
                EndIf
                $mianyiok = DirCreate($disk1[$i] & "\autorun.inf")
                If($mianyiok = 1) Then
                        RunWait(@ComSpec & ' /c md ' & $disk1[$i] & '\autorun.inf\病毒免疫专用..\', '', @SW_HIDE)
                        FileSetAttrib($disk1[$i] & "\autorun.inf", "+SHR")
                        RunWait("cmd /c echo Y|cacls.exe " & $disk1[$i] & "\autorun.inf /P everyone:N", "", @SW_HIDE)
                        MsgBox(4096, "本机 硬盘 第" & $i & "个驱动器 ", "已成功对:" & $disk1[$i] & "进行了杀防 U 盘病毒的免疫", 1)
                EndIf
        EndIf
Next
 楼主| 发表于 2009-7-31 14:02:56 | 显示全部楼层
楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...

    $disk1 = DriveGetDrive("all")
        For $i = 1 To $disk1[0]
                $vardisk = DriveStatus($disk1[$i])
                        If $vardisk = "READY" Then
                                   ......................
然后加下边的即可..

谢谢各位,结贴了~~~
 楼主| 发表于 2009-7-31 14:03:05 | 显示全部楼层
楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...

    $disk1 = DriveGetDrive("all")
        For $i = 1 To $disk1[0]
                $vardisk = DriveStatus($disk1[$i])
                        If $vardisk = "READY" Then
                                   ......................
然后加下边的即可..

谢谢各位,结贴了~~~
发表于 2009-7-31 14:08:11 | 显示全部楼层
第一层IF是没意义~ 不过,原来你的问题并不是要判断排除A盘?
 楼主| 发表于 2009-7-31 14:43:26 | 显示全部楼层
楼上兄弟.感谢一直的关注......
请仔细看我三楼...我已解决了我的问题,....再重复一下.之所以在排除A盘上困扰,因为对个返回值晕了一下!!!

但基于技术上的学习,很想知道: 4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已......是BUG吗?还是我理解错误了????
发表于 2009-7-31 15:10:49 | 显示全部楼层
那个返回的是数组,不是空值。
$disk1 = DriveGetDrive("FIXED")
MsgBox(4096,"状态",$disk1[0])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 09:13 , Processed in 0.069567 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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