Отключение 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. Есть пара моментов, которые хотелось бы отметить особо.
- Все параметры, с которым мы сейчас работали, хранятся в реестре и касаются всех профилей AutoCAD и ПО на его основе. Без вариантов.
- После внесения изменений в реестр крайне желательно перезапустить AutoCAD: в окне настроек AutoCAD не покажет новые параметры, хотя и будет их использовать. При закрытии AutoCAD значения в реестре (по крайней мере пока) не перезаписываются.
Добрый день.
Как можно проверить правильно ли сработал код?
в командной строке я вижу следующее:
2
3
4
5
Команда:
Команда:
Команда:
Команда: ; ошибка: Настройка переменной AutoCAD отвергнута: "onlinedocmode" 0
Н-да, переменная ReadOnly... Можно попробовать просто заменить (setvar "onlinedocmode" 0) прямой записью в реестр. Но тогда понадобится после этого перезапускать AutoCAD. Сейчас нет никакой возможности подробно прорабатывать, поэтому такой вот "эрзац" нарисовался:
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
(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)