Запрет печати паролем

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

vserg4
Сообщения: 5
Зарегистрирован: 16 янв 2007, 22:42

Aent писал(а):vserg4, ваша задача принципиально не решается с использованием любых программных средств. Если документ отчуждается - нет проблемы вывести его на большой ЖК экран, сфотографировать цифровой камерой и распознать в Word, используя программу OCR (b.e. - тот же FineReader). Практика показывает, что на 200 страничный документ уходит около 4 часов работы ;)
Word же в принципе не даст Вам возможности защитить от копирования читаемый документ.
Резюме: Такие проблемы решаются только через суд. Поддерживаю предложение Игорь Акопян.
Вы знаете, после того как я просидел над этим текстом несколько месяцев, создать хоть небольшую трудность, ввиде 4 часов, для меня только радость.
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

vserg4 писал(а):А можно немного по подробнее про эти шаги.
- менять цвет или видимость (скрытый) шрифта при открыти, сохранении так, чтобы если документ открывается без активных макросов шрифт был бы белый (под цвет бумаги) или невидимый, но при активных макросах при открытии эти макросы делали бы шрифт автоматически видимым (или нужного цвета)

Вместо уже указанной выше процедуры:

Код: Выделить всё

Private Sub Document_Open()
    Set X.AppWord = Word.Application
End Sub
Можно вставить такую вещь

Код: Выделить всё

Private Sub Document_Open()
    Set X.AppWord = Word.Application
    ThisDocument.Content.Font.Color = wdColorBlack
    ThisDocument.Content.Font.Hidden = False
End Sub
а в модуль класса EventClass два (на всякий случай) таких обработчика событий:

Код: Выделить всё

Private Sub AppWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    ThisDocument.Content.Font.Hidden = True
End Sub

Private Sub AppWord_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
    On Error Resume Next
    ThisDocument.Undo 9999 
    ThisDocument.Content.Font.Hidden = True
End Sub
После этого, при закрытии файла с сохранением весь текст становится невидимым и так сохраняется (нужно проделелать это до того, как Вы поставите защиту на сохранение). При следующием открытии, если VBA не включен, текст останется невидимым и недоступным.

- защитить модули VBA от доступа

В редакторе VBA Menu-Tools-Project Properties-Protection-Lock project - да - password - тоже достаточно длинный

- перехватывать события выделения, копирования и изменения подобно тому, что я предложил выше.

в модуль класса EventClass добавить:

Код: Выделить всё

Private Sub AppWord_WindowSelectionChange(ByVal Sel As Selection)
    Selection.Collapse
End Sub

Код: Выделить всё

Private Sub AppWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWindow.View.ShowHiddenText = False
    ThisDocument.Content.Font.Hidden = True
    ThisDocument.Content.Font.Color = wdColorWhite
End Sub

- защитить книгу от сохранения изменений

Меню - Сервис - Установить защиту - записи исправлений - пароль - выберите пароль максимально длинный (15 символов) - чтобы даже если захотят подобрать, хоть потеряли бы время на это достаточно (только сами его не забудьте!!!)

И посмотреть, что получится... у меня к сожалению нет больше времени, чтобы все протестировать по всем возможным направлениям... но попробуйте сами все и сообщите, как получилось.. самому интересно... во всяком случае захватить текст в буфер у меня не получается и сохранить внесенные изменения тоже.

Но как это не печально... все эти старания все-равно мало чем помогают, т.к. достаточно открыть файл с отключенными макросами, восстановить цвет и видимость шрифта и все будет доступно...

может быть стоит подумать, куда можно было бы спрятать текст "поглубже", где бы он находился в файле, но не отражался, пока не будет включены макросы, которые этот текст возвращали бы в видимое состояние... я пока не придумал.
Всякое решение плодит новые проблемы.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

vserg4, никто не мешает реализовать всё выше сказанное.... Это может сбить с толку неопытного человека.
Кроме того, добавьте в начало своего текста фразу об авторских правах и ответственности за их нарушение, а также фразу о необходимости вашего согласия при использовании текста или его фрагментов. И если вы готовы отстаивать свои права в суде (думаю это тоже не простое занятие: время, деньги) сделайте посылку заказным письмом. При личной встрече/передаче можно дополнительно уведомить принимающего, что авторские права защищены и всё такое :)
Изображение
Дионис
Сообщения: 153
Зарегистрирован: 11 июл 2005, 13:42
Откуда: Крым, Алушта
Контактная информация:

Кстати, существуют программы взлома паролей, а также есть программа, которая совершенно не знает о существовании паролей в документах Офиса (что ворд, что эксель, что акцесс - просто открывает и позволяет с ними работать, по ходу читая текст макросов с возможностью внесения изменений)
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Ещё есть бесплатно распространяемая Microsoft программа WordView ;)
Не говоря уже о возможности отключить макросы установив высокий уровень безопасности в MS Word ;) ;)
Сергей739
Сообщения: 1
Зарегистрирован: 09 ноя 2013, 19:37

долблюсь с этой проблемой 2й день, и не до конца
два варианта решения
можно перехватить внутренние команды ворда, например:
Sub EditCopy()
'
MsgBox "Команда не активна"
End Sub

Sub EditCut()
'
MsgBox "Команда не активна"
End Sub

Sub fileprint()

'
MsgBox ("Печать не возможна")
End Sub

далее мудрил со скрываемым текстом при AutoOpen и AutoClose
(если макрос не запущен- видно только предупрежддение что документ защищен, текст не выведен, перезапусти с макросами"
в случае активации макроса это выражение скрывается, выводится основной текст

Sub AutoOpen()
.....
....
....
' With Selection.Font

' .Hidden = True

' End With
....
...
end sub

но ворд все время глючит при обработке, пошагово отрабатывает одно, а залпом другое при открытии третье.... а т.к. документ будут открывать люди скорее всего о VBA ни чего не знающие, то решил не рисковать
нашел такое решение, вставил в шаблон:

Sub blokerdoc()

ActiveDocument.Protect Password:="aots123456", NoReset:=False, Type:= _
wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False ', Print:=False


End Sub

при открытии нужного документа запускаю этот макрос
все хорошо, все красиво, блокирует,
но две вещи не могу решить:

1. Ctrl+P - заблокирована, а если нажать просто кнопку печать - печатает
2. выделенный текст не перетаскивается внутри документа, но легко выносится за приложение и вставляется в другое окно(любой текстовой редактор, в том числе новый док ворд)
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Кстати, на VBA можно открыть процесс и модифицировать его память?
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Из VBA можно вызывать любые функции WinAPI
http://msdn.microsoft.com/en-us/library ... e.10).aspx
в т.ч. функции управления процессами и памятью
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Значит патчим процесс winword.exe и дело в шляпе. Опять же если макросы будут включены.
It's a long way to the top if you wanna rock'n'roll
Emil
Сообщения: 1
Зарегистрирован: 20 ноя 2013, 09:12

Добрый день! Ребят, подскажите пожалуйста макрос для запрета печати из файла word, excel c запросом ввода пароля. Может кто-нибудь задавался такой целью.
Ответить