Страницы: 1 2 След.
RSS
Безопасность: как уберечь документ Excel от несанкционированной кражи и использования.
 
Добрый день, очень рад , что мне подсказали адрес Вашего сайта. Действительно великолепна Ваша работа и очень полезна! СПАСИБО! Я занимаюсь вопросами организации и нормирования труда уже 10 лет в ОАО "РЖД", обладаю важными и интересными  решениями своих задач, разработанными мной именно в Excel. В этой связи, у меня вот такой вопрос: Существует ли возможность защитить тот или иной документ Excel (разработанный мной), если он скопирован на другой компьютер и используется другими пользователями? Ну например, таким образом, что в случае незаконного копирования (без моего ведома) через определенное время (скажем через 2-3 дня) вся информация ( в том числе и все формулы) просто бы стерлись (т.е. форма бы очистилась), если не ввести своевременно пароль!  Может вы подскажите решение? СПАСИБО ВАМ в любом случае!
Orloff
 
O Henry, добро пожаловать на форум.  
Ваш вопрос не редкость и ответы на него с обсуждением встречаются. Поэтому не пренебрегайте поиском. Он (поиск) хоть и не очень удачный, но есть:)  
А по вашему вопросу - к сожалению для Вас штатная защита Ехс обходится на раз;(  
ЗЫ 38344
 
Спасибо Igor67 )) насчет штатной защиты ..даже и речи не может быть...это понятно. Хотелось бы интересное решение))) Спасибо..буду искать))))
Orloff
 
Самое простое - запихнуть в COM библиотеку.
 
{quote}{login=longines}{date=21.04.2011 10:20}{thema=}{post}Самое простое - запихнуть в COM библиотеку.{/post}{/quote}  
Формулы листа? И это самое простое?
 
а и формулы тоже.. почему нет?
Живи и дай жить..
 
общий подход:  
 
1 скрыть все листы, оставив только один - заставку  
2 открывать  нужные листы макросом по паролю  
3 предусмотреть разграничение паролей: юзверей и админов  
4 если админский не вводился давно, то отказ от работы  
 
 
но, как уже сказано, это от простых пользователей..
Живи и дай жить..
 
{quote}{login=слэн}{date=22.04.2011 09:54}{thema=}{post}общий подход:  
 
1 скрыть все листы, оставив только один - заставку  
2 открывать  нужные листы макросом по паролю  
3 предусмотреть разграничение паролей: юзверей и админов  
4 если админский не вводился давно, то отказ от работы  
 
 
но, как уже сказано, это от простых пользователей..{/post}{/quote}  
 
Уважаемый Слэн, простите за наглость, я ведь простой, но немножко если продвинутый в этом пользователь....а можно то, что вы предлагаете как то изложить доступно и пошагово?  Инструкцию как это сделать. Буду признателен. Надо писать макросы для паролей? Я не разбираюсь в написании VB ...может поможете?
 
{quote}{login=}{date=22.04.2011 03:13}{thema=Re: }{post}{quote}{login=слэн}{date=22.04.2011 09:54}{thema=}{post}общий подход:  
 
1 скрыть все листы, оставив только один - заставку  
2 открывать  нужные листы макросом по паролю  
3 предусмотреть разграничение паролей: юзверей и админов  
4 если админский не вводился давно, то отказ от работы  
 
 
но, как уже сказано, это от простых пользователей..{/post}{/quote}  
 
Уважаемый Слэн, простите за наглость, я ведь простой, но немножко если продвинутый в этом пользователь....а можно то, что вы предлагаете как то изложить доступно и пошагово?  Инструкцию как это сделать. Буду признателен. Надо писать макросы для паролей? Я не разбираюсь в написании VB ...может поможете?{/post}{/quote}  
 
Я извиняюсь, а о каком формате файла вы говорите? Excel 2007/2010 или Excel 2003?
 
{quote}{login=}{date=22.04.2011 03:13}{thema=Re: }{post}{quote}{login=слэн}{date=22.04.2011 09:54}{thema=}{post}общий подход:  
 
1 скрыть все листы, оставив только один - заставку  
2 открывать  нужные листы макросом по паролю  
3 предусмотреть разграничение паролей: юзверей и админов  
4 если админский не вводился давно, то отказ от работы  
 
 
но, как уже сказано, это от простых пользователей..{/post}{/quote}  
 
Уважаемый Слэн, простите за наглость, я ведь простой, но немножко если продвинутый в этом пользователь....а можно то, что вы предлагаете как то изложить доступно и пошагово? Инструкцию как это сделать. Буду признателен. Надо писать макросы для паролей? Я не разбираюсь в написании VB ...может поможете?    
 
Уважаемый Слэн, простите за наглость, я ведь простой, но немножко если продвинутый в этом пользователь....а можно то, что вы предлагаете как то изложить доступно и пошагово?  Инструкцию как это сделать. Буду признателен. Надо писать макросы для паролей? Я не разбираюсь в написании VB ...может поможете?{/post}{/quote}
Orloff
 
О  Excel 2010
Orloff
 
/
Живи и дай жить..
 
{quote}{login=Henry Orloff}{date=22.04.2011 03:28}{thema=}{post}О  Excel 2010{/post}{/quote}  
 
Скажу Вас сразу, что Вам сначала надо создать пароль на открытие книги. Если Вы этого не сделаете, то никакие макросы Вам не помогут. Поясню. Дело в том, что формат Exce 2010 - это ZIP-архив. Если пароля на открытие нет, то я могу разархивировать этот архив куда-нибудь. И вот тут самое интересное.  
 
1. Макросы? Убиваю файл xl\vbaProject.bin. Убив этот файл, VBA проекта нет.  
2. Защита листа? Убиваю XML элемент "sheetProtection" в xl\worksheets\sheet1.xml (sheetN.xml, где N - цифра).  
 
Ну вот и всё. :)  
 
Если сохранить его в формате XLSB, то убить VBA проект можно, но защиту листа уже нет, так как вместо XML лежат в архиве бинарники.  
 
Вывод: делайте пароль на открытие. :)
 
NullUzer скажите как создать пароль на открытие? и где? в книге Excel?
Orloff
 
При сохранении файла (см. аттачмент).
 
Приходит на ум вариантик, но надо "докрутить":  
1. В модуле "ЭтаКнига" файла прописываете код самоуничтожения книги в ближайший день:  
Private Sub Workbook_BeforeClose(Cancel As Boolean)   'книга уничтожится безвозвратно после заданной даты!!!  
  If Date <= #12/31/2029# Then Exit Sub  
  With ThisWorkbook  
     .Saved = True  
     .ChangeFileAccess xlReadOnly  
     On Error Resume Next  
     SetAttr .FullName, 0 ' снять атрибут у файла "Только чтение"  
     Kill .FullName  
     .Close False  
  End With  
End Sub  
и закрываете проект паролем.  
2. В своём Personal.xls отслеживаете события открытия этой книги и как-то программно правите "критический день" на следующий.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Alex_ST}{date=22.04.2011 04:11}{thema=}{post}Приходит на ум вариантик, но надо "докрутить":  
2. В своём Personal.xls отслеживаете события открытия этой книги и как-то программно правите "критический день" на следующий.{/post}{/quote}  
 
Для отслеживания событий на уровне Application понадобится написать класс, глобальную переменную...
 
{quote}{login=The_Prist}{date=22.04.2011 04:12}{thema=}{post}Можно проще: Меню-Подготовить-Зашифровать документ. Это в 2007  
{/post}{/quote}  
Я уже сказал об этом. :)
 
Те же яйца - только в профиль. :)  
Кстати, ошибочка, однако! У него Офис 2010, поэтому "Можно проще: Меню-Подготовить-Зашифровать документ" он никогда не увидит. :) Но это ж мелочи. :)
 
{quote}{login=The_Prist}{date=22.04.2011 04:37}{thema=Re: Re: Re: Re: }{post}{quote}{login=NullUzer}{date=22.04.2011 04:29}{thema=Re: Re: Re: }{post}Те же яйца - только в профиль. :){/post}{/quote}Считаю, что яйца не те же, даже в профиль. Вы высказались, что уже подсказали именно то, что я написал, однако это не так. Это во первых. Во-вторых, в 2010 можно, как я помню так:  
 
Файл-Сведения-Разрешения-Защита книги-Зашифровать паролем.{/post}{/quote}  
 
Ну и где ж мне в 2010 Экселе искать "Меню-Подготовить-Зашифровать документ"? Где это "Подготовить"? Я говорю не о функциональности, а о месте расположения. :)
 
Н-да...  
У человека стоит Офис 2010. Вот Вы пишете "Зайди Меню-Подготовить-Зашифровать документ". Ну и ГДЕ он это найдёт в 2010 Экселе? Я вот у себя такого не нахожу. :)
 
Alex_ST  ваш вариант очень даже интересный! Попробую! ))) кстати, если это работает то сюрприз "похитителям" обеспечен)))) СПАСИБО! Вариант отличный!
 
Спасибо ВСЕМ! что откликнулись на мою просьбу о помощи в данном вопросе! Очень приятно!
 
Ды я-то знаю, а человек может и не знать. :)
 
{quote}{login=слэн}{date=22.04.2011 03:37}{thema=}{post}/{/post}{/quote}  
 
Большое спасибо СЛЭН за ВАШ вариант! Все работает !!!! Пригодится! СПАСИБО!!!!!!
Orloff
 
Такое предложение по варианту Alex_ST.  
Как-то с Персонал геморно... Если файл рассчитан именно для конкретного компьютера/пользователя/HDD, то можно это и отслеживать. Были тут примеры.  
Вот например скрипт vbs:  
 
' List Operating System Properties  
 
 
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")  
 
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
 
Set colOperatingSystems = objWMIService.ExecQuery _  
   ("Select * from Win32_OperatingSystem")  
 
For Each objOperatingSystem in colOperatingSystems  
   Wscript.Echo "Boot Device: " & objOperatingSystem.BootDevice  
   Wscript.Echo "Build Number: " & objOperatingSystem.BuildNumber  
   Wscript.Echo "Build Type: " & objOperatingSystem.BuildType  
   Wscript.Echo "Caption: " & objOperatingSystem.Caption  
   Wscript.Echo "Code Set: " & objOperatingSystem.CodeSet  
   Wscript.Echo "Country Code: " & objOperatingSystem.CountryCode  
   Wscript.Echo "Debug: " & objOperatingSystem.Debug  
   Wscript.Echo "Encryption Level: " & objOperatingSystem.EncryptionLevel  
   dtmConvertedDate.Value = objOperatingSystem.InstallDate  
   dtmInstallDate = dtmConvertedDate.GetVarDate  
   Wscript.Echo "Install Date: " & dtmInstallDate    
   Wscript.Echo "Licensed Users: " & _  
       objOperatingSystem.NumberOfLicensedUsers  
   Wscript.Echo "Organization: " & objOperatingSystem.Organization  
   Wscript.Echo "OS Language: " & objOperatingSystem.OSLanguage  
   Wscript.Echo "OS Product Suite: " & objOperatingSystem.OSProductSuite  
   Wscript.Echo "OS Type: " & objOperatingSystem.OSType  
   Wscript.Echo "Primary: " & objOperatingSystem.Primary  
   Wscript.Echo "Registered User: " & objOperatingSystem.RegisteredUser  
   Wscript.Echo "Serial Number: " & objOperatingSystem.SerialNumber  
   Wscript.Echo "Version: " & objOperatingSystem.Version  
Next  
 
 
Нам может пригодиться  
objOperatingSystem.RegisteredUser  
objOperatingSystem.SerialNumber  
objOperatingSystem.InstallDate  
 
Есть варианты и попроще, поискать нужно... И с номером диска тоже вариант неплохой - диск редко меняется.  
Т.е.  если проверку копонент не прошёл - файл удаляется. Сразу, при запуске файла. И к дате можно не привязываться - а то ушлый юзер, когда одна копия файла удалится, может поменять дату на год назад/вперёд, и будет продолжать пользоваться.
 
Уважаемый Hugo! увы у меня вариант когда есть корпоративное распространение и пользование документом Excel, мне нужен вариант что в случае сторонней кражи...т.е. такой "приятный сюрпризик" ....чик и он исчез, если не сделать какого то шага (ввод пароля, даты...и.т.д.)
Orloff
 
Если корпоративное - поставьте код проверки определённого сетевого файла. Если файл доступен - работаем.  
Есть ведь сетевой ресурс, доступный всем пользователям этого файла?  
Конечно, чтоб исчез - это круто... Я бы так рисковать не стал, всякое бывает, исчезнет рабочий файл - как оправдываться будете? А вот чтоб просто не работали макросы, листы скрывались - это можно, риска потери данных нет.
 
Даже как-то что-то насчёт обновлений в таком ключе обсуждали (точно не помню).  
Смысл такой - т.к. экземпляров файла много и каждый править в случае изменений затруднительно, то каждый файл при запуске берёт код из мастер-файла по сети, который легко заменить.  
Соответственно, на стороне такой файл работать не будет.  
Вроде можно через References файл с макросом подключить - сам не проверял, не утверждаю.
 
Проверил - работает.  
Т.е. код UDF лежит в стороннем файле, который прилинковам через References.  
UDF работает, пока тот файл доступен.
Страницы: 1 2 След.
Наверх