Отключение online-доступа для AutoCAD 2015

В AutoCAD 2015 в настройках профиля появилась новая вкладка - "Online". Предположительно, в этой вкладке указывается, надо ли AutoCAD'у синхронизироваться с облаком, и, если надо, то что именно синхронизировать.

Учитывая реалии, в которых лично мне приходится жить, подобное "богатство" не потребуется. Мало того, оно вообще вредно и его надо бы отключить.

Если пользователь не авторизован в службе Autodesk 360, то беспокоиться не о чем - вкладка попросту недоступна. Если же это не так (ну, ситуации-то разные бывают), то изменить или отключить эти параметры несложно.

Флажок "Enable automatic sync" регулируется системной переменной ONLINEDOCMODE. А вот флажок "Sync my settings with the cloud" регулируется только записями в реестре. К сожалению, мне не удалось (по крайней мере пока) найти, где и как хранятся настройки - что именно хранить в облаке (все данные, или какие-то выбранные). Но отключить все это дело вполне реально.

Итак, сделаем, чтобы AutoCAD не пытался ничего закинуть в облако. Прежде всего установим системную переменную ONLINEDOCMODE в 0:

1
2
3
(if (getvar "onlinedocmode")
  (setvar "onlinedocmode" 0)
  ) ;_ end of if

После этого лезем в реестр, раздел реестра для текущего продукта с учетом его локализации, подветка Varibales, ключ ONLINESETTINGSSYNC. Если такое значение есть - удаляем:

1
2
3
4
5
6
7
8
9
10
(if (vl-registry-read
      (setq hive (strcat "HKEY_CURRENT_USER\\"
                         (vlax-product-key)
                         "\\Variables"
                         ) ;_ end of strcat
            ) ;_ end of setq
      (setq key "ONLINESETTINGSSYNC")
      ) ;_ end of vl-registry-read
  (vl-registry-delete hive key)
  ) ;_ end of if

Но, к сожалению, только этого шага недостаточно: необходимо еще и "обнулить" значения для зарегистрированного пользователя Autodesk 360. Записи о зарегистрированных в Autodesk 360 пользователях хранятся в реестре, ключ

1
2
3
4
(strcat "HKEY_CURRENT_USER\\"
        (vlax-product-key)
        "\\WebUsers"
        ) ;_ end of strcat

И там внутри каждой подветки надо найти ключ OnlineSettingsSync и установить ему значение 0.

Удаление всех подветок WebUsers не уничтожает факта подключения к Autodesk 360, придется искать другие пути для этого.

В результате мы получим код наподобие:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(vl-load-com)

(defun no-online-sync (/ hive key)
  (if (getvar "onlinedocmode")
    (setvar "onlinedocmode" 0)
    ) ;_ end of if
  (if (vl-registry-read
        (setq hive (strcat "HKEY_CURRENT_USER\\"
                           (vlax-product-key)
                           "\\Variables"
                           ) ;_ end of strcat
              ) ;_ end of setq
        (setq key "ONLINESETTINGSSYNC")
        ) ;_ end of vl-registry-read
    (progn
      (vl-registry-delete hive key)
      (foreach subhive (vl-registry-descendents
                         (setq hive (strcat "HKEY_CURRENT_USER\\"
                                            (vlax-product-key)
                                            "\\WebUsers"
                                            ) ;_ end of strcat
                               ) ;_ end of setq
                         nil
                         ) ;_ end of vl-registry-descendents
        (if (vl-registry-read (strcat hive "\\" subhive) "OnlineSettingsSync")
          (vl-registry-write (strcat hive "\\" subhive) "OnlineSettingsSync" 0)
          ) ;_ end of if
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun

(no-online-sync)

Скачать код можно здесь.

P.S. Есть пара моментов, которые хотелось бы отметить особо.

  1. Все параметры, с которым мы сейчас работали, хранятся в реестре и касаются всех профилей AutoCAD и ПО на его основе. Без вариантов.
  2. После внесения изменений в реестр крайне желательно перезапустить AutoCAD: в окне настроек AutoCAD не покажет новые параметры, хотя и будет их использовать. При закрытии AutoCAD значения в реестре (по крайней мере пока) не перезаписываются.


Комментарии

Есть 2 коммент. к “Отключение online-доступа для AutoCAD 2015”
  1. Дмитрий пишет:

    Добрый день.
    Как можно проверить правильно ли сработал код?
    в командной строке я вижу следующее:

    1
    2
    3
    4
    5
    Acad2015OnlineCloudDisable.lsp успешно загружено.
    Команда:
    Команда:
    Команда:
    Команда: ; ошибка: Настройка переменной AutoCAD отвергнута: "onlinedocmode" 0
  2. Кулик Алексей aka kpblc пишет:

    Н-да, переменная ReadOnly... Можно попробовать просто заменить (setvar "onlinedocmode" 0) прямой записью в реестр. Но тогда понадобится после этого перезапускать AutoCAD. Сейчас нет никакой возможности подробно прорабатывать, поэтому такой вот "эрзац" нарисовался:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    (vl-load-com)

    (defun no-online-sync (/ hive key cloud need_restart)
      (if (getvar "onlinedocmode")
        (foreach subkey (vl-registry-descendents
                          (setq key (strcat "HKEY_CURRENT_USER\" (vlax-product-key) "\\WebUsers"))
                          nil
                          ) ;_ end of vl-registry-descendents
          (if (and (setq cloud (vl-registry-read (strcat key "
    \" subkey) "CloudDefaultMode"))
                   (/= cloud 0)
                   ) ;_ end of and
            (progn
              (vl-registry-write (strcat key "
    \" subkey) "CloudDefaultMode" 0)
              (setq need_restart t)
              ) ;_ end of progn
            ) ;_ end of if
          ) ;_ end of foreach
        ) ;_ end of if
      (if (vl-registry-read
            (setq hive (strcat "
    HKEY_CURRENT_USER\"
                               (vlax-product-key)
                               "
    \\Variables"
                               ) ;_ end of strcat
                  ) ;_ end of setq
            (setq key "
    ONLINESETTINGSSYNC")
            ) ;_ end of vl-registry-read
        (progn
          (vl-registry-delete hive key)
          (foreach subhive (vl-registry-descendents
                             (setq hive (strcat "
    HKEY_CURRENT_USER\"
                                                (vlax-product-key)
                                                "
    \\WebUsers"
                                                ) ;_ end of strcat
                                   ) ;_ end of setq
                             nil
                             ) ;_ end of vl-registry-descendents
            (if (and (setq cloud (vl-registry-read (strcat hive "
    \" subhive) "OnlineSettingsSync"))
                     (/= cloud 0)
                     ) ;_ end of and
              (progn
                (setq need_restart t)
                (vl-registry-write (strcat hive "
    \" subhive) "OnlineSettingsSync" 0)
                ) ;_ end of progn
              ) ;_ end of if
            ) ;_ end of foreach
          ) ;_ end of progn
        ) ;_ end of if

      (if need_restart
        (alert "
    Перезапустите AutoCAD!")
        ) ;_ end of if
      ) ;_ end of defun

    (no-online-sync)

Поделитесь своим мнением


Я не робот.