У меня есть надстройка Excel, которую мы хотим развернуть для клиентов. В настоящее время это файл .xlam
. Я знаю, что надстройки Excel, вероятно, не лучший способ распространения программного обеспечения, но это то, что у меня есть. Мой вопрос: как защитить эту надстройку от использования на других компьютерах, чем предполагаемый клиент?Ограничить распространение надстройки Excel
Я рассмотрел следующие:
- надстройка проверяет наличие файла в каком-то неясном месте. Если он существует, перейдите к шагу 6
- Если файл не существует, сгенерируйте файл с некоторым случайным набором символов. И отобразите это как регистрационную информацию для пользователя.
- Затем пользователь связывается с нами для получения кода активации.
- Мы создаем код активации с использованием некоторого алгоритма с соленой хешей и отправляем его обратно пользователю.
- Пользователь вводит этот код активации в приглашение. Макрос проверяет его, а затем сохраняет код активации на защищенном листе в
.xlam
. - Затем макрос проверяет, что код активации на защищенном листе действителен для кода в файле. Если он не запрашивает активацию.
- Если файл и активация совпадают, разрешите доступ к функциям надстройки.
проблем, которые я с высказанной идеей является следующее:
- Где должен храниться файл, и что о машинах, которые не позволяют текущему пользователю создавать файлы в этом месте?
- Было бы легко для пользователя узнать о существовании этих файлов? Если файл будет скопирован на другой компьютер, надстройка будет проверять его и работать без проблем.
- Если мы обновим надстройку, она потеряет код активации. Это может быть легко устранено, если мы используем второй файл вместо защищенного листа для его хранения.
Ваша предлагаемая схема похожа на замок на вашей входной двери: это только держит честных людей. Если вы серьезно относитесь к обеспечению безопасности своего продукта, вам нужно будет отказаться от VBA _and_, используя высокоуровневое решение безопасности (другие, более квалифицированные, чем я, должны будут прокомментировать, что это может быть) –