由于微点目前并不能有效地处理AutoCAD的LSP脚本病毒,为了解决这个问题,我写了以下的代码,以作临时之解决办法。

声明:代码仅是从文件名做出判断是否删除,判断的依据依然很低级,同时其他考虑亦未能周全,所以使用过程难免会出现很多问题。使用前应有必要的备份准备。因使用本代码出现的后果,我就不负责了。

使用办法:将代码保存为acad2006.lsp(以AutoCAD2006为例),文件存放在“C:\Documents and Settings\[用户名]\Application Data\Autodesk\AutoCAD 2006\R16.2\chs\Support\”。如果安装了cad的Express tools功能,就将代码加入到文件“C:\Program Files\AutoCAD 2006\Express\acetauto.lsp”之中,以避免因病毒文件名同名造成不能正常运行的问题。

其他说明:对于已经中毒的系统,使用前须先将病毒修改过的CAD文件复原。如:删除support目录下的acad.lsp、acaddoc.lsp、acad.rx、acadapp.lsp等文件,修复acad.mnl等菜单文件。至于图形文件目录里的病毒文件则可不用管,运行该代码后就自动删除了。

特别说明:如果CAD出现VBS系统加载失败,命令行字符不能正确显示,部分命令不能正常运行,请将acad.mnl文件用原安装程序里的文件覆盖即可恢复正常。

源代码如下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Created by scien.Feng
(setq dwgpath (getvar "dwgprefix"))
(setq xacad (vl-directory-files dwgpath "acad*.*" ))
(setq lenxacad (vl-list-length xacad))
(if (> lenxacad 0)
(progn
    (setq n 0)(setq n 0)(setq n 0)
    (while (> lenxacad n)
         (setq numlist (nth n xacad))
         (setq numlsp (strcat dwgpath numlist))
         (setq ext (vl-filename-extension   numlsp))
         (setq lspext (strcase ext))
         (if (not (wcmatch lspext ".FMP"))
            (progn
            (alert "即将删除病毒文件!")
            (vl-file-delete   numlsp)
            (princ "\n已删除病毒文件:")(princ numlsp)
            )
         )
         (setq n (1+ n))
    )(terpri) 
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;