找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

[研讨] 卸载.vlx程序

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-12-29 08:37:29 | 显示全部楼层

2014以上版本加的安全路径

系统变量,得到值后,删除掉你想的路径,然后再写回去就行了吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-12-29 11:33:45 | 显示全部楼层
第一件事情是注册表,老外写的,不过我说有试过(有谁试过的,请告诉我)
(defun RemoveFromStartupSuite (filename   /          Default
                               File_List  Fn         Index
                               Regpath    Revision   Startuppath
                               Version
                              )
  ;; codeHimBelonga kdub 2010.11.27
  ;;
  (setq Regpath     "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD"
        revision    (vl-registry-read regpath "CurVer")
        version     (vl-registry-read
                      (setq regpath (strcat regpath "\\" revision))
                      "CurVer"
                    )
        default     (vl-registry-read
                      (setq
                        regpath (strcat regpath "\\" version "\\Profiles")
                      )
                    )
        startupPath (strcat regpath
                            "\\"
                            default
                            "\\Dialogs\\Appload\\Startup"
                    )
        index       0
        file_list   '()
  )
  (while (setq fn (vl-registry-read
                    startupPath
                    (strcat (itoa (setq index (1+ index))) "Startup")
                  )
         )
    (setq file_list (cons fn file_list))
  )
  (setq index    0
        filename (strcase filename)
  )
  (vl-registry-delete startupPath)
  (vl-registry-write startupPath)
  (foreach entry (reverse file_list)
    (if (not (vl-string-search FileName (strcase entry)))
      (progn (vl-registry-write
               startupPath
               (strcat (itoa (setq index (1+ index))) "Startup")
               entry
             )
             (vl-registry-write startupPath "NumStartup" (itoa index))
      )
    )
  )
  (setq index 0
        file_list '()
  )
  (while (setq fn (vl-registry-read
                    startupPath
                    (strcat (itoa (setq index (1+ index))) "Startup")
                  )
         )
    (setq file_list (cons fn file_list))
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2016-12-29 12:06:59 | 显示全部楼层
明显的强迫症,想事情不知道回旋,VLX是Lisp打包文件,加载是Lisp定义的命令,而Lisp是无法卸载的,只能用nil值取冲,那么问题不就可以换一个角度考虑了吗?
到底这个VLX加载了那些Lisp函数或命令,想知道这个答案也是很有难度的,但要比明知VLX不能卸载而一定要去卸载更靠谱吧?
再说,好好的程序,你不想用的话,不加载就是,干嘛费劲巴拉得去卸载?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2016-12-29 12:07:57 | 显示全部楼层
太高深了~~~~~~~~~~~~~~~~~~~~~~~~~~·
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-12-29 13:51:17 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2016-12-29 13:56 编辑

先抛开强迫症不说,比如你用了一个.vlx,加入了启动组,_appload又卸不了,现在不想用了(比如发现不好用)。就得从注册表中卸载。那个老外的程序我试过了,是可以的。
长老是不是认为我在讲没有加入启动组的vlx。如果没有加入启动组,直接删除就得了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-12-29 13:56:42 | 显示全部楼层
将7Xin_Manager.vlx添加到acaddoc.lsp中
当程序被删除时,自动删除注册表并从acaddoc.lsp中删除相关代码,再删除添加的搜索目录


(defun 7Xin:AddStartup ( / sFile fLisp bFind sLine lstLine AddToRun
            )
  (setq str
     '(if (and (setq sPath (vl-registry-read "HKEY_CURRENT_USER\\Software\\7Xin" "7Xin_ManagerPath"))
           (setq sPath (vl-string-right-trim "\\" sPath))
           (findfile (strcat sPath "\\7XIN_MANAGER.VLX"))
           )
       (progn
        (load (strcat sPath "\\7XIN_MANAGER.VLX"))
        (setq sPath nil)
        (princ)
        )
       (progn
        (vl-registry-delete "HKEY_CURRENT_USER\\Software\\7Xin")
        (if sPath
         (progn
          (setq sSupport (getenv "ACAD"))
          (setq lenSource (strlen sSupport)
           )
          (while (setq iPos (vl-string-search ";" sSupport))
           (setq lstPath (cons (substr sSupport 1 iPos) lstPath)
        sSupport (substr sSupport (+ 2 iPos))
        )
           )
          (setq lstPath (reverse (cons sSupport lstPath)))
          (setq lstPath (vl-remove-if '(lambda (e) (wcmatch (strcase e) (strcat sPath "*"))) lstPath))
          (setq sPath (car lstPath)
           lstPath (cdr lstPath)
           )
          (foreach str lstPath
           (setq sPath (strcat sPath ";" str))
           )
          (setenv "ACAD" sPath)
          )
         )
        (setq fLisp (open (findfile acadlsp) "r"))
        (while (setq sLine (read-line fLisp))
         (if (wcmatch (strcase sLine) "*7XIN_MANAGER*")
          (if (= (car lstLine) "") (setq lstLine (cdr lstLine)))
          (setq lstLine (cons sLine lstLine))
          )
         )
        (close fLisp)
        (if (setq fLisp (open (findfile acadlsp) "w"))
         (progn
          (mapcar '(lambda (sLine) (write-line sLine fLisp)) (reverse lstLine))
          (close fLisp)
          (alert "[[信·CAD]]已被删除,程序自动卸载!系统无残留!")
          )
         (progn
          (alert (strcat acadlsp " 被设为只读或正被其他程序打开\n程序无法自动卸载"))
          (startapp "explorer" (strcat " /select," (findfile acadlsp)))
          )
         )
        (setq fLisp nil sPath nil sLine nil lstLine nil sPath nil lstPath nil sSupport nil str nil)
        (princ)
        )
       )
    )

  (defun AddToRun (sFile / file)
    (if (setq file (7Xin:Open sFile "w"))
      (progn
    (princ "(setq acadlsp \"" file)
    (princ acadlsp file)
    (princ "\")" file)
    (prin1 str file)
    (write-line "" file)
    (mapcar '(lambda (sLine) (write-line sLine file)) (reverse lstLine) )
    (close file)
    T
    )
      (progn
    (7Xin:Attrib-Write sFile)
    (if (setq fLisp (7Xin:Open sFile "w"))
      (progn
        (princ "(setq acadlsp \"" file)
        (princ acadlsp file)
        (princ "\")" file)
        (prin1 str fLisp)
        (write-line "" fLisp)
        (mapcar '(lambda (sLine) (write-line sLine fLisp)) (reverse lstLine) )
        (close fLisp)
        (7Xin:Attrib-ReadOnly sFile)
        T
        )
      )
    )
      )
    )

  
  (if (and (setq sFile (findfile acadlsp))
       (setq fLisp (7Xin:Open sFile "r"))
       )
    (progn
      (while (and (not bFind) (setq sLine (read-line fLisp)))
    (cond ((and (wcmatch (strcase sLine) "*7XIN_MANAGER*") (wcmatch (strcase sLine) "*AUTODESK*")))
          ((and (wcmatch (strcase sLine) "*7XIN_MANAGER*") (not (wcmatch (strcase sLine) "*AUTODESK*")))
           (setq bFind T)
           )
          (T
           (setq lstLine (cons sLine lstLine))
           )
          )
    )
      (close fLisp)
      )
    )

  (cond (bFind)
    ((and acadlsp (/= acadlsp "") (not (findfile acadlsp))) (AddToRun (strcat 7Xin::Path "\\" acadlsp)))
    ((findfile acadlsp) (AddToRun (findfile acadlsp)))
    (T (7Xin:AddStartApp (strcat 7Xin::Path "\\7Xin_Manager.VLX")))
    )
  )

评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-12-29 14:02:37 | 显示全部楼层

你的强迫症比我严重,我的很简单。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;VLX程序卸载 By 自贡黄明儒2016.12.29
(VL-LOAD-com)
(defun C:MyUnload ()
  (if (menugroup "CXinZhi")
    (command "menuunload" "CXinZhi")        ;不能带后缀
  )
  (vl-file-delete "acad.lsp")
  (if (vl-catch-all-error-p
        (vl-catch-all-apply 'vl-unload-vlx (list "HH"))
      )                                        ;不能带后缀
    (vl-catch-all-apply 'DelToStartupSuite (list "HH"))
  )
  (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   VLX程序卸载

;;从启动组删除HH.VLX
;;示例(DelToStartupSuite "HH")
(defun DelToStartupSuite (filename / CT DEFAULT N NUMSTARTUP REGPATH REVISION VERSION)
  (setq        regpath         "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD"
        revision (vl-registry-read regpath "CurVer")
        version         (vl-registry-read
                   (setq regpath (strcat regpath "\\" revision))
                   "CurVer"
                 )
        default         (vl-registry-read
                   (setq
                     regpath (strcat regpath "\\" version "\\Profiles")
                   )
                 )
        regpath         (strcat regpath
                         "\\"
                         default
                         "\\Dialogs\\Appload\\Startup"
                 )
        ct         1
  )
  (if (setq numstartup (vl-registry-read regpath "NumStartup"))
    (progn
      (setq n (1+ (atoi numstartup)))
      (while
        (and
          (< ct n)
          (/= filename
              (cadr
                (fnsplitl
                  (vl-registry-read regpath (strcat (itoa ct) "Startup"))
                )
              )
          )
        )
         (setq ct (1+ ct))
      )
    )
  )
  (vl-registry-delete regpath (strcat (itoa ct) "Startup"))
  (vl-registry-delete regpath "NumStartup" (itoa ct))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;VLX程序卸载 By 自贡黄明儒2016.12.29

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-22 09:47 , Processed in 0.242639 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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