Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возможно ли изменять параметры безопастности макросов при помощи кода?

266
10 марта 2004 года
mhaturov
901 / / 23.10.2003
Необходимо программно изменить параметры безопастности офисного приложения. Можно ли это сделать программно?
Проблемма в том, что проги разъезжаются по филиалам, а оттуда приходят
притензии типа:
"Твоя прога не работает!!! Не знаю почему!? Просто даже не
запускается!!!"...
...в 100% случаев оказывается, что у них стоит высокая безопасность
макросов...
...и они ее даже переключить не могут ;-))
266
10 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Необходимо программно изменить параметры безопастности офисного приложения. Можно ли это сделать программно?
Проблемма в том, что проги разъезжаются по филиалам, а оттуда приходят
притензии типа:
"Твоя прога не работает!!! Не знаю почему!? Просто даже не
запускается!!!"...
...в 100% случаев оказывается, что у них стоит высокая безопасность
макросов...
...и они ее даже переключить не могут ;-))


народ, так как задачка не моя (встала перед многими известным и уважаемым XTremAll'ом, у которого сейчас нет выхода в инет и с которым общаюсь при помощи мобильника и халявных SMS с сайтов), пришли мы к выводу, что лучше всего нам проще всего вылавливать окно с сообщением о макросах и инициировать "клик" по нужной кнопке.
Тоесть, встаёт вопрос, как енто можно сделать?
Тоесть, или как узнать HWND этого окна, или SendKey ему послать, ну, естественно, или как вообще программно эту защиту послать куда подальше?

266
11 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov

народ, так как задачка не моя (встала перед многими известным и уважаемым XTremAll'ом, у которого сейчас нет выхода в инет и с которым общаюсь при помощи мобильника и халявных SMS с сайтов), пришли мы к выводу, что лучше всего нам проще всего вылавливать окно с сообщением о макросах и инициировать "клик" по нужной кнопке.
Тоесть, встаёт вопрос, как енто можно сделать?
Тоесть, или как узнать HWND этого окна, или SendKey ему послать, ну, естественно, или как вообще программно эту защиту послать куда подальше?


Народ. сегодня получил от XTremAll'а следующее сообщение:
Через Спай нашел класс окна ...
Не знаешь как можно его использовать для получения Хендла?
Я перерыл половину ВинАПИ - не нашел...(может не заметил ;-))

Кстати!
Это окно не является дочерним для офиса!!!
Может кто что-нить подскажет. XTremAll - то тут, когда у него был инет, многим помогал...

258
11 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by mhaturov

Народ. сегодня получил от XTremAll'а следующее сообщение:
Через Спай нашел класс окна ...
Не знаешь как можно его использовать для получения Хендла?
Я перерыл половину ВинАПИ - не нашел...(может не заметил ;-))

Кстати!
Это окно не является дочерним для офиса!!!
Может кто что-нить подскажет. XTremAll - то тут, когда у него был инет, многим помогал...



У меня сейчас небольшой завал на работе, поэтому не могу сам долго рыскать, но помойму менять уровень безопасности программно можно было, иначе как макро-вирусы работают, может это правда относится к офису97, а в 2000 и 2002 уже запретили, то тогда конечна для универсальности надо искать другой вариант...

Насчет SendKey - MsgBox который выскакивает с предупреждением является диалоговым окном и поэтому должен иметь фокус и никуда его не отдавать, так что можно легко использовать SendKey.

Насчет hWnd и класса окна. Если класс окна известен и он достаточно уникален, то получать hWnd можно так:

' ищем по классу
hwnd = FindWindow("XLMAIN", vbNullString)
' ищем по классу и заголовку
hwnd = FindWindow("XLMAIN", "Microsoft Excel - Книга1")

Но так мы найдем токо окна верхнего уровня, а если это окно дочернее, то надо спускаться по дереву (через Spy++ это хорошо можно увидеть):

hwnd = FindWindow("XLMAIN", vbNullString)
hwnd1 = FindWindowEx(hwnd,ByVal 0&, "ReBarWindow32", vbNullString)
hwnd2 = FindWindowEx(hwnd1,ByVal 0&, "ComboBoxEx32", vbNullString)

Переменная ByVal 0& - можно использовать если необходимо перебрать все дочерние окна по кругу (имеется по текущей ветке дерева, а не те дочерние, которые еще ниже находятся)

Объявления:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

266
11 марта 2004 года
mhaturov
901 / / 23.10.2003
Большое спасибо!
Сейчас переправлю SMS-ками к XTremAll'у. Если у него возникнут ещё вопросы - сюда выложу.
258
11 марта 2004 года
SergeySV
1.5K / / 19.03.2003
SMS-ка, ну ты гигант ;)
266
11 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
SMS-ка, ну ты гигант ;)


Чтож, приходится... Ну сегодня, надеюсь, у него появтися выход в инет...

266
11 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov

Чтож, приходится... Ну сегодня, надеюсь, у него появтися выход в инет...


Вот что мне написал XTremAll:
HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security\Level
Изменяется в диапазоне от 1 до 3...
1 - низкая безопасность
2 - средняя
3 - высокая
...и это офис ХР!!! Вота какая у них защита!!!!!!
Еще одно:
все это надо делать с незапущеным офисом

:D

258
12 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Ты знаешь, тут где-то читал (в Хакере что ли), что есть еще альтернативный вариант открытия книги с макросами без их блокировки и ИЗМЕНЕНИЯ уровня безопасности.

Делается это через цифровой сертификат. Можно добавить в свой проект цифровой сертификат самой микрософт (т.е. проект будет подделываться под родной), а для такого своего микрософтсткого сертификата не нужно даже добавлять в Excel в всписок доверенных сертификатов, потому что он по умолчанию пропустится системой безопасности как свой. Такой своеобразный бэкдор для себя ребята из микрсофта оставили.
Прикол состоит в том, что утилита по созданию такого цифрового сертификата поставляется вместе с офисом. Вообщем попробую дома поискать эту статейку...
266
12 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Ты знаешь, тут где-то читал (в Хакере что ли), что есть еще альтернативный вариант открытия книги с макросами без их блокировки и ИЗМЕНЕНИЯ уровня безопасности.

Делается это через цифровой сертификат. Можно добавить в свой проект цифровой сертификат самой микрософт (т.е. проект будет подделываться под родной), а для такого своего микрософтсткого сертификата не нужно даже добавлять в Excel в всписок доверенных сертификатов, потому что он по умолчанию пропустится системой безопасности как свой. Такой своеобразный бэкдор для себя ребята из микрсофта оставили.
Прикол состоит в том, что утилита по созданию такого цифрового сертификата поставляется вместе с офисом. Вообщем попробую дома поискать эту статейку...


М..да... Мелкософт хорошо защищает свои проги....:D :D :D

258
12 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by mhaturov

М..да... Мелкософт хорошо защищает свои проги....:D :D :D



Воо нашел: http://www.vbnet.ru/article/showarticle.asp?id=102

266
12 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV


Воо нашел: http://www.vbnet.ru/article/showarticle.asp?id=102


Да, прикольно.
Но всё же из внешнего приложения подправить реестр, а потом запустить макрос гораздо скрытнее и интереснее.;)

258
13 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by mhaturov

Да, прикольно.
Но всё же из внешнего приложения подправить реестр, а потом запустить макрос гораздо скрытнее и интереснее.;)



Да, но проблема если офис уже запущен - не закрывать же его на глазах у изумленного пользователя :)

266
15 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV


Да, но проблема если офис уже запущен - не закрывать же его на глазах у изумленного пользователя :)


Ну это верно. Хотя, у варианта правки реестра есть и свои плюсы;)

258
07 июня 2004 года
SergeySV
1.5K / / 19.03.2003
В продолжении правки реестра. В OfficeXP появилась еще одна напасть, которая не дает программно получить доступ к модулям проекта Excel, это галка
- "ДОВЕРЯТЬ ДОСТУП К VISUAL BASIC PROJECT" - кто знает, как до нее добраться программно???

Следил за Excel что он делает с реестром во время установки этого флажка, но ничего не понял, уровень безопасности там реально видно как меняется, все это отслеживается, попутно он начинается копаться в ветвях:
HKCU/Software/Microsoft/VBA/Trusted
HKCU/Software/Policies/Microsoft/VBA/Trusted
но там в итоге пусто

где же Excel хранит значение этого флажка?
266
07 июня 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
В продолжении правки реестра. В OfficeXP появилась еще одна напасть, которая не дает программно получить доступ к модулям проекта Excel, это галка
- "ДОВЕРЯТЬ ДОСТУП К VISUAL BASIC PROJECT" - кто знает, как до нее добраться программно???

Следил за Excel что он делает с реестром во время установки этого флажка, но ничего не понял, уровень безопасности там реально видно как меняется, все это отслеживается, попутно он начинается копаться в ветвях:
HKCU/Software/Microsoft/VBA/Trusted
HKCU/Software/Policies/Microsoft/VBA/Trusted
но там в итоге пусто

где же Excel хранит значение этого флажка?


У меня такая мысля. Есть масса прог - деинсталяторов, которые, после активации, ведут полный лог всех действий на ПК над реестром, файлами важными и т.п. Вот такой-то прогой можно и воспользоваться. Найти одну из этой серии, установить, активировать, поменять параметры, отменить параметры, дезакитвировать, проглядеть лог. Тама будет как раз всё написано.;)

258
07 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Совсем старый стал, наверное понедельник (вернее бурно проведенные выходные), у меня же шампунь есть, ща посмотрим что он там делает ...
266
07 июня 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Совсем старый стал, наверное понедельник (вернее бурно проведенные выходные), у меня же шампунь есть, ща посмотрим что он там делает ...

;) :D :D :D :D :D :D

258
07 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Так, ну нашел я где он правит, вообщем это:
HKEY_USERS\........\Software\Microsoft\Office\10.0\Excel\Security\AccessVBOM

Там где точки (я просто не стал его копировать, длинный, длинный цифровой ключ), это я так понял уник. ключ и соответственно на каждом компе он будет свой... как бы тогда дорбраться до ключа AccessVBOM, все что ли перебрать, которые есть в HKEY_USERS (их там 3: .DEFAULT и еще один вспомог.)?
272
07 июня 2004 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by SergeySV
Так, ну нашел я где он правит, вообщем это:
HKEY_USERS\........\Software\Microsoft\Office\10.0\Excel\Security\AccessVBOM

Там где точки (я просто не стал его копировать, длинный, длинный цифровой ключ), это я так понял уник. ключ и соответственно на каждом компе он будет свой... как бы тогда дорбраться до ключа AccessVBOM, все что ли перебрать, которые есть в HKEY_USERS (их там 3: .DEFAULT и еще один вспомог.)?


Ну Вы парни даёте, клевая тема и реализации прикольные, сразу видно флудерыы:D :D :D :D :D :D Так держать!!!!:D :D :D

258
07 июня 2004 года
SergeySV
1.5K / / 19.03.2003
Да у меня просто задачка то по проще, я же не вирусы пишу :), я могу себе позволить закрыть Excel установки макроса или даже попросить пользователя закрыть Excel, а вот просить его менять уровень безопасности и все остальные галки - это означает для меня, что все самому придется бегать по компам...... хочу наоборот, все свести к одному exe файлу и авт. установки без лишних вопросов инсталятора к пользователю, потому как все эти вопросы тут же переадресуется ко мне :(



P.S. Думаю, если все получится выложу здесь как исходники (модуль с необх. функциями), так и готовую универс. программку, которую можно будет легко настроить на установку любых макросов.
1.9K
24 декабря 2006 года
AxXxB
229 / / 21.11.2006


Ссылочка поменялась на http://www.vbnet.ru/articles/showarticle.aspx?id=102

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог