szjyf123456 发表于 2023-1-2 19:19:26

不用管理员运行CAD,注册sqlite驱动的尝试

学习http://bbs.xdcad.net/thread-725185-1-1.htmldcl1214大神的自动注册sqlite 驱动
发现没有管理员运行CAD,vl-registry-write 不能写HKLM根键,wsh(WScript.shell) 的regwrite方法写HKLM也一样,所以自动驱动不成功。所以想找一个不用管理员运行CAD。简单的思路就是用wsh的run方法,运行regeit命令。经过测试可行。reg文件可以自己做好,也可以在软件里写好。
(vl-load-com)
(defun c:wsh_reg(/ fso regfnm regf regnr)

    (setq fso (vlax-create-object "scripting.FileSystemObject")) ;;;;创建文件系统对象
    (setq regfnm "d:\\bdwg\\sqlite\\668.reg")                  ;;;;临时的注册表文件名称
    (setq regf (vlax-invoke fso 'OpenTextFile regfnm 2 t 0))   ;;;;创建临时的注册表文件对象 textstream
    (setq regnr                                                ;;;;;;注册表内容注意根键\\,字符里面的路径要\\\\这样才可以
          "Windows Registry Editor Version 5.00                  

\"Driver\"=\"D:\\\\bdwg\\\\sqlite\\\\odbc\\\\sqlite64\\\\sqlite3odbc.dll\"
\"Database\"=\"\"

\"UsageCount\"=dword:00000001
\"Driver\"=\"D:\\\\bdwg\\\\sqlite\\\\odbc\\\\sqlite64\\\\sqlite3odbc.dll\"
\"Setup\"=\"D:\\\\bdwg\\\\sqlite\\\\odbc\\\\sqlite64\\\\sqlite3odbc.dll\"

\"UsageCount\"=dword:00000001
\"Driver\"=\"D:\\\\bdwg\\\\sqlite\\\\odbc\\\\sqlite64\\\\sqlite3odbc.dll\"
\"Setup\"=\"D:\\\\bdwg\\\\sqlite\\\\odbc\\\\sqlite64\\\\sqlite3odbc.dll\"

\"SQLite3 ODBC Driver\"=\"Installed\""
    )
    (vlax-invoke regf 'Write regnr)                        ;;;;;filesystem textstream 对象
    (setq wsh (vlax-get-or-create-object "WScript.shell"))   ;;;;;创建脚本对象
    (setq commandstr (strcat "regedit /s " regfnm))          ;;;;;即将要运行的命令字符串
    (vlax-invoke wsh 'run commandstr)                        ;;;;;调用WScript.shell对象 运行方法,执行导入注册表的命令,无需管理员身份运行cad
    (vlax-invoke regf 'Close)                              ;;;;;关闭临时注册表文件
    (vlax-release-object regf)                               ;;;;;关闭临时注册表文件
    (vlax-invoke fso 'DeleteFile regfnm)
    (vlax-release-object fso)
    (vlax-release-object wsh)
    )
页: [1]
查看完整版本: 不用管理员运行CAD,注册sqlite驱动的尝试