|
|
|||||||||||
Перехват макроса запущенного офисного приложения23.06.2012, 20:38. Показов 2765. Ответов 11
Метки vba макрос безопасность (Все метки)
Открываем стандартно, к примеру, Любой.XLS
Нужно, чтобы вместо него: - запустился свой макрос (например из личной книги), - он проанализирует открываемый файл "Любой.XLS" - даст добро на его запуск (на выбор пользователя "с отключением макросов" или "без".) В голову приходит только написание VB -> exe-скрипта, на который переназначить "открыть с помощью" все типы офисных приложений. Но это не совсем эстетично (те же рисунки иконок сольются)... Альтернатива только перетягивание документа на exe-файл. Может, есть какие более простые решения в виде надстроек и т.п.? Добавлено через 24 минуты Почитал про "Личную книгу макросов". Итак, макрос из нее запускается автоматически и раньше, чем сам открываемый документ, если присвоить ему имя
Как его опознать? (простой либо сложный способы, может чтение состояния памяти, API)???
0
|
|||||||||||
| 23.06.2012, 20:38 | |
|
Ответы с готовыми решениями:
11
Ошибка при экспорте данных в Word из другого Офисного приложения Запуск внешнего приложения из макроса
|
|
|
||||||||||||||||
| 23.06.2012, 21:08 [ТС] | ||||||||||||||||
|
Почти получилось. Но не вариант.
Вот тест: Personal.xls
1) Пишет имя "Personal.xls" 2) Сообщение системы безопасности 3) Запускает Bad.xls, Thisworkbook 4) Событие Personal.xls определяет имя открываемой книги "Bad.xls" 5) Запускает Bad.xls, Module1 А хотелось бы п.4 между 1-2 или 2-3.
0
|
||||||||||||||||
|
|
|
| 24.06.2012, 21:04 [ТС] | |
|
Оставим вопрос безопасности мимо этой темы, если по сути нет ничего.
Я и не ожидал простых решений. Если программа будет работать в нужном порядке, юзер может безопасность в принципе выключить вообще. Не по теме: А так, если по этому вопросу интересно, можешь почитать эти статьи: А мне наверно придется копать в сторону считывания памяти и API, если Office Application не дает возможности узнать имя открываемого документа напрямую, перед его открытием (из под макроса личной книги). Добавлено через 22 часа 54 минуты Актуально...
0
|
|
|
призрак
|
|
| 25.06.2012, 07:00 | |
|
(буйно) нафантазировал такую схему:
1. пишется стороннее приложение, 2. файлы офисных приложений (можно только екселевских) перевешиваются на это приложение. 3. при запуске офисного файла автоматически запускается наше приложение и "анализирует" файл (при этом приложение, конечно, должно понимать структуру файла или его объектную модель) 4. в случае, если наше приложение дает "добро", оно закрывает файл и тут же открывает его уже в екселе - запустив ексель, если не запущен, или открыв в запущенном екселе. как это реализовать и на чём - меня не спрашивайте
0
|
|
|
|
|||
| 25.06.2012, 16:42 [ТС] | |||
|
Анализ, а потом идет распределение по преложениям по расширению файла, полученного как атрибут. Это вариант-альтернатива, который мне не очень нравится, хоть и является готовым решением.
0
|
|||
|
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
|
|
| 25.06.2012, 18:36 | |
|
А не устроит ли контроль безопасности макросов на основе цифровой подписи? Tools - Digital signature... Таким способом по крайней мере легко отделить выполнение всех собственных макросов от сторонних. Ну и не проблемма настроить при необходимости доступ к ним нескольким коллегам.
Добавлено через 29 минут Пуск - Все программы - Microsoft Office - Средства Microsoft Office - Цифровой сертификат для проектов VBA. В окне создания цифрового сертификата введите опознавательный знак Вашего личного цифрового сертификата (я ввел свою фамилию и инициалы) и нажмите OK. При этом на компьютере, где-то в Document And Settings появится ваш файл цифрового сертификата (он может понадобиться для переноса сертификат более чем на одну рабочую машину). Далее в параметрах безопасности макросов (в разных версиях Office по-разному) ставим "отключать все макросы, кроме макросов с цифровой подписью". Далее подписываем свои файлы с макросами, начиная с personal.xls и заканчивая любым "hello world", в редакторе VBA следующим образом: Tools - Digital signature... В окне Цифровая подпись нажать кнопку Выбрать... и там выбрать свой только что созданный сертификат. Сейчас на память не помню, но в инете легко найти, как можно потом перенести свой цифровой сертификат на другие машины, вроде бы копированием файла локального сертификата и аналогичной настройкой безопасности макросов. Смысл всех этих манипуляций в том, что сторонний зараженный файл изначально не имеет Вашего сертификата и просто-напросто не запустится.
0
|
|
|
|
|
| 25.06.2012, 19:05 [ТС] | |
|
Очень интересное развитие. Буду знать.
Но у меня другая цель - написание программы, которая берет на себя функции анализа запускаемого макроса. Поэтому остановимся на вопросе: как из под автозапускаемого макроса в Personal.xls узнать имя открываемого документа (до момента выдачи запроса системой безопасности) ? В прил. есть все для имитации способа (пост № 3). Уверен, его возможно допилить.
0
|
|
|
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
|
|
| 26.06.2012, 07:17 | |
|
Допустим имеем то же самое, что и в посте 3, но Personal.xls у нас подписан цифровой подписью, а Bad.xls - нет. В этом случае Bad.xls загрузится без запуска макросов, мы можем из Personal.xls исследовать код через VBProject в Bad.xls, после чего, если он безвреден, подписать его программно и перезапустить. Как подписать xls программно, я пока не знаю.
0
|
|
|
|
|
| 26.06.2012, 20:14 [ТС] | |
|
Да программа должна все это делать, а не человек. Поэтому не вариант.
Запуск абсолютно любого документа -> перехват этой программой, анализ, выдача юзеру на экран сообщения о подозрительных командах в макросе (причем с указанием конкретно каких). Вопрос у пользователя "продолжать ли открытие этого файла" ... Добавлено через 5 часов 8 минут Дело в том, что Presonal.xls не нужно подписывать. Он и так запускается без спроса у пользователя (вот в чем фишка).
0
|
|
| 26.06.2012, 20:14 | |
|
Помогаю со студенческими работами здесь
12
Перехват вывода приложения запущенного с правами администратора Перехват HTTPS трафика андроид приложения, запущенного на эмуляторе
Блокировка запущенного приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|