Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

14 Июль 2020, 12:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Защита макроса  (Прочитано 675 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Стартовое сообщение: 9 Июнь 2020, 08:04 »

Добрый день!
Подскажите,пожалуйста, как защитить макросы от изменений? В excel в защищенном файле макросы не открываются без указания пароля. Если ли подобные возможности в LO?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 956


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 9 Июнь 2020, 08:37 »

Можно запаролить любую библиотеку созданную пользователем в документе или офисе, кроме стандартных или встроенных (Standard, Tools и др.).
Записан

mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 922


« Ответ #2: 9 Июнь 2020, 11:09 »

Имейте ввиду, что запароленная библиотека имеет ограничения в версиях до 7.0 в плане поддержки Unicode (tdf#57113). Строки, содержащие, например, кириллицу, будут "сломаны" на системах с не-кириллической локалью. Библиотеки, запароленные на версиях до 7.0, будут показывать такие сломанные символы при работе на любой версии; если запаролить на 7.0, то на 7.0 и дальше будет работать нормально, но на более старых версиях всё равно будет по-старому.
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 956


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #3: 9 Июнь 2020, 12:22 »

Строки, содержащие, например, кириллицу, будут "сломаны" на системах с не-кириллической локалью.
А если локаль кириллическая не будут "сломаны"? Кажется, не удачная формулировка или я не так понял.

Эту проблему можно обойти, если источник не ASCII строк будет находится вне запароленной библиотеки (в другой библиотеке, в документе или во внешнем файле) или если строка будет закодирована числовыми значениями символов (нужна будет функция декодирования).
Записан

mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 922


« Ответ #4: 9 Июнь 2020, 12:38 »

Строки, содержащие, например, кириллицу, будут "сломаны" на системах с не-кириллической локалью.
А если локаль кириллическая не будут "сломаны"? Кажется, не удачная формулировка или я не так понял.

Да, наверное, я криво выразился... в общем, при сохранении любых строк в коде в запароленный компилированный образ старые версии переводят эти строки в однобайтную кодировку, соответствующую текущей локали (причём не локали из настроек программы, а локали потока - там интересная внутренняя логика, не суть: скажем, на Windows это будет язык системы). Поэтому на русской винде, скажем, русские буквы будут закодированы правильно, а греческие превратятся в вопросики ещё на этапе сохранения. Прошу прощения за ещё одно невразумительное описание Улыбка

Да, есть возможность обойти - используя указанные способы. Я написал просто о том, что это может быть нужно учитывать.
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 956


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #5: 9 Июнь 2020, 13:10 »

У меня на Маке системная локаль русская, но не ASCII символы (кириллица) в запароленной  библиотеке не поддерживаются.
Записан

mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 922


« Ответ #6: 9 Июнь 2020, 13:25 »

У меня на Маке системная локаль русская, но не ASCII символы (кириллица) в запароленной  библиотеке не поддерживаются.

Да, я поэтому и заметил, что там сложная логика, и она зависит от ОС. На Windows используется GetACP - см. osl_getThreadTextEncoding; на других ОС - см. osl_thread_textencoding_init_Impl, которая вероятно вернёт UTF-8. А если текущая кодировка не 1-байтная, то она превратится в MS-1252 в GetSOStoreTextEncoding, которая вызывает GetOneByteTextEncoding.

В общем, да, мне надо было написать не "кириллическая локаль", а писать про кодировки.
« Последнее редактирование: 9 Июнь 2020, 13:31 от mikekaganski » Записан

С уважением,
Михаил Каганский
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Ответ #7: 9 Июнь 2020, 13:36 »

Да, спасибо, свою библиотеку получилось запаролить. Только кто ж знал, что Standard нельзя использовать для этой цели...  Да уж... придется опять все переделывать Подмигивающий
А еще этот бесконечный вопрос отключить/включить макросы... Его нельзя обойти для загружаемого из макроса файла? Или например загружать вообще без создания бланка... А то еще и все листы мелькают перед глазами вовремя обработки... Перепробовала все значения аргумента MacroExecutionMode - так и не поняла разницу в реалии.
Записан
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Ответ #8: 9 Июнь 2020, 13:43 »

Кстати, на 10 винде не увидела косяков с кодировкой, вроде обошлось... а если на линукс придется переносить? Только эмпирически?
Записан
mikekaganski
Гуру
*******
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 922


« Ответ #9: 9 Июнь 2020, 13:44 »

А еще этот бесконечный вопрос отключить/включить макросы... Его нельзя обойти для загружаемого из макроса файла?

Ну да, специальный режим для удобства вирусописателей. "Если вы сделаете так, то адресат не узнает, что открытие вашего вложения выполнит ваш макрос".

На самом деле есть возможность настроить доверенные расположения, где макросы выполняются без запроса. И/или сертификаты.
Записан

С уважением,
Михаил Каганский
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Ответ #10: 9 Июнь 2020, 14:01 »

Да тут предполагается, что пользователи уже все сделали, что хотели - осталось слить информацию в один шаблон. И включение макроса не нужно в принципе для загруженного макроса. Вроде так и написано, что макросы не выполняются для MacroExecutionMode со значением 0. Тогда в чем смысл вопроса: быть или не быть?
Записан
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Ответ #11: 10 Июль 2020, 10:16 »

Добрый день!
Попытаюсь конкретизировать последний вопрос. Файлы для выгрузки размещаются на сетевом ресурсе, а в регламентные сроки обрабатываются джобом. Некому нажимать кнопочку "отключить макросы". Подскажите, пожалуйста, может все-таки можно решить эту проблему не через настройки LO? Файлы открываются через StarDesktop.loadComponentFromURL. Возможно, есть аргументы, которые не позволят запустить макросы и не потребуют ответа на вопрос?
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 214


« Ответ #12: 10 Июль 2020, 11:10 »

Не понял слегка. В обычной рабочей среде макросы в Параметры/Безопасность - Низкий (т.е. включены все полностью) или только где доверенные расположения/сертификаты. Потому что 99% пользователей не замечают сообщения вверху экрана (это же касается Excel, просто какое-то слепое пятно у людей вверху ~:-)

Вам нужно навсегда запретить запуск опр. макроса другим макросом при "особом" запуске кроном?

Есть аргументы комстроки для крона (и запуска в --headless режиме), с запуском макроса. Макрос может удалять другие библиотеки и макросы.

А еще есть События для файла/приложения LO при открытии файла (в т.ч. кроном), на которые можно назначить макрос. Он тоже может удалять другие библиотеки и макросы, чтобы они впредь не запускались.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Fiona
Участник
**
Offline Offline

Сообщений: 34


« Ответ #13: 10 Июль 2020, 11:42 »

Не совсем так... Удалять ничего не нужно. И я не могу поставить низкий уровень защищенности в корпоративной сети. Пожалуй, можно попробовать для выгрузки использовать доверенные источники, спасибо. Но есть вероятность того, что первая загрузка в шаблон на рабочих местах будет из файлов xlsm, чтобы избежать прерываний при выполнении загрузки из-за несовместимости с VBA придется сидеть за компьютером и тыкать пальцем "отключить макрос".
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!