Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2009, 15:36   #1
dvdai
Новичок
Джуниор
 
Регистрация: 21.01.2009
Сообщений: 2
По умолчанию Excel и безопасность.

Здравтвуйте!

Есть файл excel, в котором есть поля, используемые как входные данные ("входные ячейки"). На основе этих данных ведется расчет в файле. И есть поля с выходными данными ("выходные ячейки").

Задача следующая: Ограничить доступ пользователей к файлу (чтобы не было возможности копировать файл, просматривать макросы и тд). Но при этом каким-то образом организовать возможность ввода данных во входные ячейки и видеть результаты выходных ячеек

Подскажите, пожалуйста, как это можно сделать?
dvdai вне форума Ответить с цитированием
Старый 21.01.2009, 15:42   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Запретить просматривать макросы - можно (но если пользователь ОЧЕНЬ захочет их посмотреть, то ему это всё равно удастся)

Исключить возможность копирования файла - только что разве средствами ОС (ограничение прав доступа на файл). Excel тут ни при чём - пользователь просто скопирует файл, не открывая его.

Короче, стойкость защиты во многом зависит от уровня "любознательности" пользователя.
При желании все эти защиты можно обойти.
EducatedFool вне форума Ответить с цитированием
Старый 21.01.2009, 16:33   #3
dvdai
Новичок
Джуниор
 
Регистрация: 21.01.2009
Сообщений: 2
По умолчанию

Меня интересуют любые средства - например, доступ через Access, через какие-то инструментарии средств разработки. В общем, любой способ.
Возможно, конечно, это надо было не здесь спрашивать, но все же

Спасибо за ответ!
dvdai вне форума Ответить с цитированием
Старый 21.01.2009, 16:47   #4
b00s
Форумчанин
 
Регистрация: 19.01.2008
Сообщений: 120
По умолчанию

юзайте Tools->Protection . Там все это можно зделать, ну кроме конечно "чтобы не было возможности копировать файл"
b00s вне форума Ответить с цитированием
Старый 22.01.2009, 03:55   #5
cent
Пользователь
 
Аватар для cent
 
Регистрация: 26.12.2008
Сообщений: 73
По умолчанию

Цитата:
Запретить просматривать макросы - можно (но если пользователь ОЧЕНЬ захочет их посмотреть, то ему это всё равно удастся)

Исключить возможность копирования файла - только что разве средствами ОС (ограничение прав доступа на файл). Excel тут ни при чём - пользователь просто скопирует файл, не открывая его.

Короче, стойкость защиты во многом зависит от уровня "любознательности" пользователя.
При желании все эти защиты можно обойти.
Согласен, средствами Excel защитить от копирования нельзя, только правами в ОС.

А вот открыв файл можно сделать ВСЕ

Цитата:
При желании все эти защиты можно обойти
Четко сформулированная задача - половина решения!
<= Спасибо оставляем в отзывах
cent вне форума Ответить с цитированием
Старый 22.01.2009, 06:32   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В принципе, задача реализуема, если уровень компьютерной грамотности пользователей невысок.

Защиту от копирования (точнее, от использования файла на другом компьютере) реализовать можно...

1) Всё работает только в том случае, если включены макросы.
Для необходимости включения макросов пользователем перед сохранением файла программно скрываем (xlSheetVeryHidden) все листы (оставляя видимым один пустой лист)
Отобразить листы сможет только макрос (доступ к макросам запаролен)

2) Делаем привязку файла к жесткому диску (3 строки кода) и к полному пути файла (1 строка кода)
Таким образом, если файл будут пытаться открыть на другом компе или из другой папки (или даже просто переименовав файл), он самоуничтожится и закроется.

Повторюсь: профессионал сможет легко обойти такую защиту, но пользователю она доставит немало хлопот...
EducatedFool вне форума Ответить с цитированием
Старый 22.01.2009, 06:45   #7
cent
Пользователь
 
Аватар для cent
 
Регистрация: 26.12.2008
Сообщений: 73
По умолчанию

Я думаю в тему будет поинтересоваться о привязке именно к жесткому диску. КАК это реализуется!?
И вообще, каковы возможности VBA в привязке к железу? и как это реализуется?
Четко сформулированная задача - половина решения!
<= Спасибо оставляем в отзывах

Последний раз редактировалось cent; 22.01.2009 в 06:51.
cent вне форума Ответить с цитированием
Старый 22.01.2009, 07:07   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
каковы возможности excel в привязке к железу?
Возможности точно такие же, как у любого другого приложения.

Цитата:
КАК это реализуется!?
Примерно так:

Код:
Private Sub Workbook_Open()
    Const My_Drive_C_SerialNumber = "12345678" ' сюда пишем серийный номер своего диска
    If Drive_C_SerialNumber <> My_Drive_C_SerialNumber Then
        MsgBox "Вы пытаетесь открыть файл на другом компьютере", vbCritical, "Нет доступа"
        Application.DisplayAlerts = False
        newsh = ThisWorkbook.Worksheets.Add.Name    ' создаём пустой лист
        For Each sh In ThisWorkbook.Worksheets
            If sh.Name <> newsh Then sh.Delete    ' удаляем все листы этого файла, кроме пустого
        Next
        ThisWorkbook.Save
        ThisWorkbook.Close False
    End If
End Sub

Function Drive_C_SerialNumber() As String
    Drive_C_SerialNumber = CreateObject("scripting.filesystemobject").GetDrive("c:\").SerialNumber
End Function
Это лишь пример. Но для защиты "от дурака" может хватить...

Разумеется, выводить MsgBox с сообщением перед удалением листов нельзя - нажатием Ctrl + Pause выполнение макроса легко остановить.
(в принципе, это решается путём application.EnableCancelKey=xlDisab led)

Есть ещё множество нюансов, но, в любом случае, полноценной защиты не обеспечить.
Пока ещё не существует такой программы, которую невозможно было бы взломать. Что уж говорить про защиту файла Excel...
EducatedFool вне форума Ответить с цитированием
Старый 16.02.2009, 01:15   #9
SStone
Пользователь
 
Регистрация: 27.11.2008
Сообщений: 16
По умолчанию

К вопросу о защите файла...
Не хотел создавать новую тему - позвольте задам вопрос здесь!

Как-нибудь можно установить низкую безопастность макросов именно для данного файла средствами VBA без привязки к определенному компьютеру? Т.е. чтобы перед открытием файла Exсel не спрашивал и не отключал макросы, а сразу запускал книгу с ними?

Последний раз редактировалось SStone; 16.02.2009 в 01:17.
SStone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
информационная безопасность mafusha Безопасность, Шифрование 3 13.11.2008 16:01
Новый модератор в разделе Безопасность Alar О форуме и сайтах клуба 6 12.10.2008 15:04
Безопасность и DLL библиотеки PAVEL315 Безопасность, Шифрование 3 10.03.2007 20:31