关于一段磁盘免疫~~
本帖最后由 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 IF NOT $disk1[$i]= "a:" Or $disk1[$i]= "A:" Then
改成
if $disk1[$i] <>"a:" and $disk1 <>"A:" then
试试. 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 本坛汉化版 有朋友确认完或者解释一下这个问题后..我将及时结贴~~~感谢大家~~~ 本帖最后由 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 楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...
$disk1 = DriveGetDrive("all")
For $i = 1 To $disk1
$vardisk = DriveStatus($disk1[$i])
If $vardisk = "READY" Then
......................
然后加下边的即可..
谢谢各位,结贴了~~~ 楼上兄弟,你的第一个IF无实际意义,,我之所以在4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已...
$disk1 = DriveGetDrive("all")
For $i = 1 To $disk1
$vardisk = DriveStatus($disk1[$i])
If $vardisk = "READY" Then
......................
然后加下边的即可..
谢谢各位,结贴了~~~ 第一层IF是没意义~ 不过,原来你的问题并不是要判断排除A盘? 楼上兄弟.感谢一直的关注......
请仔细看我三楼...我已解决了我的问题,....再重复一下.之所以在排除A盘上困扰,因为对个返回值晕了一下!!!
但基于技术上的学习,很想知道: 4楼提出这个返回值的问题,想说的是,,与帮助手册里说的不一样.........仅此而已......是BUG吗?还是我理解错误了???? 那个返回的是数组,不是空值。
$disk1 = DriveGetDrive("FIXED")
MsgBox(4096,"状态",$disk1)
页:
[1]