AutoLISP

TRUSTEDPATHS…

Jako wytrawny użytkownik AutoCAD-a… zapewne nie raz spotkałeś się z sytuacją którą zilustrowałem na poniższym (prostym acz ruchomym) obrazie:

Sytuacja ta związana jest z bezpieczeństwem i ma zapewnić zminimalizowaanie możliwości wczytania złośliwego kodu do AutoCAD-a. W wersji 2014 AutoCAD-a, wprowadzone zostały środki polegające między innymi na określeniu zaufanych lokalizacji. Zapisywane jest to w zmiennej systemowej o nazwie TRUSTEDPATHS.

Wygodnym sposobem na automatyczne ładowanie dowolnych aplikacji jest korzystanie z opcji polecenia APPLOAD (WCZYTAJAPL) zwanej Pakiet uruchomieniowy. Powoduje wczytanie określonych aplikacji przy każdym uruchomieniu AutoCAD-a:

Należy pamiętać o tym, aby aplikacje dodawane w pakiecie uruchomieniowym zawsze znajdowały się w zaufanych lokalizacjach. Tutaj znajdziesz więcej informacji o zmiennej TRUSTEDPATHS, a tu więcej o bezpieczeństwie AutoCAD-a.

Poniżej cztery funkcje LISP-owe, które napisałem aby zautomatyzować kontrolę i umożliwić manipulowanie wartością zmiennej TRUSTEDPATHS w dyskretny sposób z poziomu aplikacji. Pozwalają one odczytywać, porównywać, dodawać i usuwać, określone ścieżki dostępu. Umiejętne korzystanie z nich rozszerza możliwości programującego w sytuacjach automatycznego instalowania czy aktualizowania oprogramowania.

Zdefiniowane funkcje wymagają (rzecz jasna) wcześniejszego załadowania biblioteki CADPL-Pack, a wyglądają tak:


; ---------------------------------------------------------------------------- ;
; zwraca liste sciezek zmiennej TRUSTEDPATHS, jezeli [Mode] zwraca elementy    ;
; wielkimi literami                                                            ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_GetTrustedPathsList (Mode / p r)
  (setq p (getvar "TRUSTEDPATHS")
        r (cd:STR_Parse p ";" nil)
  )
  (if Mode
    (mapcar 'strcase r)
    r
  )
)
; ---------------------------------------------------------------------------- ;
; zwraca T jezeli sciezka [Path] jest na liscie zmiennej TRUSTEDPATHS          ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-p (Path / i p)
  (setq i (jk:SYS_GetTrustedPathsList t)
        p (strcase Path)
  )
  (not
    (zerop
      (length
        (member p i)
      )
    )
  )
)
; ---------------------------------------------------------------------------- ;
; dodaje sciezke [Path] do zmiennej TRUSTEDPATHS. zwraca T lub nil             ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-Add (Path / p)
  (if
    (vl-file-directory-p Path)
    (progn
      (setq p (getvar "TRUSTEDPATHS"))
      (if
        (not (jk:SYS_TrustedPaths-p Path))
        (setvar "TRUSTEDPATHS" (strcat p ";" Path))
      )
      (jk:SYS_TrustedPaths-p Path)
    )
  )
)
; ---------------------------------------------------------------------------- ;
; usuwa sciezke [Path] ze zmiennej TRUSTEDPATHS. zwraca T lub nil              ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-Del (Path / p)
  (setq p (jk:SYS_GetTrustedPathsList nil))
  (if
    (jk:SYS_TrustedPaths-p Path)
    (progn
      (setq p (vl-remove Path p)
            p (cd:STR_ReParse p ";")
      )
      (setvar "TRUSTEDPATHS" p)
      (not (jk:SYS_TrustedPaths-p Path))
    )
  )
)
; ---------------------------------------------------------------------------- ;

Poniżej przykład działania funkcji dodającej określoną ścieżkę do zmiennej TRUSTEDPATHS:

Po wykonaniu powyżej przedstawionego kodu, ostrzegawcze okno pokazane na początku nie pojawi podczas uruchomienia AutoCAD-a, a przykładowy plik zostanie załadowany.

Wpis ten tylko częściowo dotyka tematów związanych z możliwymi sposobami programowej zmiany środowiska AutoCAD-a. Wiedza na ten temat wydaje się być przeznaczona dla bardziej zaawansowanych użytkowników.

. . . )

To jest 205 wpis…

Dodaj komentarz

Ta witryna wykorzystuje usługę Akismet aby zredukować ilość spamu. Dowiedz się w jaki sposób dane w twoich komentarzach są przetwarzane.