【问题标题】:How to run application with elevated permissions in AutoLISP or ObjectARX如何在 AutoLISP 或 ObjectARX 中以提升的权限运行应用程序
【发布时间】:2020-06-14 21:02:59
【问题描述】:

我需要在 AutoCAD/ZWCAD 中运行需要提升权限的应用程序。

通过 LISP,我可以使用以下方式运行应用程序:

(startapp "C:\\[path]\\Application.exe")

但是对于需要电梯权限的应用程序startapp 返回nil 并且应用程序无法运行。

也试过了:

(setq Shell (vlax-get-or-create-object "Wscript.Shell"))
(setq updater(vlax-invoke-method Shell 'Exec (strcat path "Appname.exe" ) ) )
(vlax-release-object Shell)

但我得到了:

*error*: Automation error : WshShell.Exec : The requested operation requires elevation.

那么还有其他方式来运行需要提升权限的外部应用程序吗?

【问题讨论】:

    标签: autocad autocad-plugin autolisp objectarx


    【解决方案1】:

    你可以试试RunAs吗?

    (startapp "runas /user:administrator C:\\[path]\\Application.exe")
    

    当然,系统会提示您输入密码。

    您可以在这里找到替代方案:https://superuser.com/q/55809/60438

    【讨论】:

    • 我想避免提示输入密码
    【解决方案2】:

    我发现它可以在 LISP 和 C++ ObjectARX 中完成,所以:

    LISP:

    (startapp "C:\\[path]\\run.bat")
    

    在run.bat中

    CALL "C:\[path]\Application.exe"
    

    在我的网站上工作正常

    ObjectARX C++

    CString AppPath = _T("C:\\[path]\\");
    CString App = AppPath + _T("Application.exe");
    HINSTANCE aplication = ShellExecute(0, _T("open") , App , NULL , AppPath , SW_SHOWNORMAL);
    

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 2011-08-27
      • 2011-12-16
      • 2011-11-13
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多