boyhong 发表于 2009-7-31 11:46:31

关于一段磁盘免疫~~

本帖最后由 boyhong 于 2009-7-31 14:00 编辑

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

$disk1 = DriveGetDrive("ALL")
        If Not $disk1 = "" Then
                For $i = 1 To $disk1
                IFNOT $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

sunless 发表于 2009-7-31 12:23:20

IF NOT $disk1[$i]= "a:" Or $disk1[$i]= "A:" Then
改成
if $disk1[$i] <>"a:" and $disk1 <>"A:" then
试试.

boyhong 发表于 2009-7-31 12:47:40

1# boyhong

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

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

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

当然,您要是帮我确认一下是不是存在这个故障~~~那十分感谢~~~
后注:我的环境是:AUTOIT_3.3.0.0-3.exe 本坛汉化版

boyhong 发表于 2009-7-31 12:49:08

有朋友确认完或者解释一下这个问题后..我将及时结贴~~~感谢大家~~~

afan 发表于 2009-7-31 13:19:57

本帖最后由 afan 于 2009-7-31 14:20 编辑

$disk1 = DriveGetDrive("ALL")
For $i = 1 To $disk1
        $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

boyhong 发表于 2009-7-31 14:02:56

楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...

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

谢谢各位,结贴了~~~

boyhong 发表于 2009-7-31 14:03:05

楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...

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

谢谢各位,结贴了~~~

afan 发表于 2009-7-31 14:08:11

第一层IF是没意义~ 不过,原来你的问题并不是要判断排除A盘?

boyhong 发表于 2009-7-31 14:43:26

楼上兄弟.感谢一直的关注......
请仔细看我三楼...我已解决了我的问题,....再重复一下.之所以在排除A盘上困扰,因为对个返回值晕了一下!!!

但基于技术上的学习,很想知道: 4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已......是BUG吗?还是我理解错误了????

afan 发表于 2009-7-31 15:10:49

那个返回的是数组,不是空值。
$disk1 = DriveGetDrive("FIXED")
MsgBox(4096,"状态",$disk1)
页: [1]
查看完整版本: 关于一段磁盘免疫~~