Создание MDE-файла. Расширение файла MDE Открыть mde

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

Пример 2 . Предположим, что в защищенной базе данныхМоя БД (см. пример1) содержится таблицадетали , в которой указана цена каждой детали. Пусть пользователюМаша надо запретить доступ к полюцена , а к остальным полям этой таблицы разрешить доступ. Для решения этой задачи нужно выполнить следующие действия:

    открыть базу данных Моя БД с правами администратора;

    создать запрос, который будет выбирать все поля из таблицы детали, кроме поля с ценой детали

SELECT детали.номерд, детали.имяд

FROM детали;

    отобрать права у Маши на любые действия с таблицей детали;

    оставить у Маши права на открытие и монопольный доступ к базе данных, а также на другие таблицы;

    открыть запрос в режиме конструктора;

    открыть окно свойств запроса и установить значение "владельца" свойству "При запуске предоставляются права" и закрыть запрос;

    сметить владельца. Сделать владельцем таблиц Машу, а владельцем запроса - пользователя Admin;

    не забыть удалить все права у группы Users , поскольку по умолчанию этой группе даны все права;

    если база данных открывалась для администратора Adminбез пароля, то установить дляAdminпароль, как было сказано в примере 1;

    закрыть базу данных, затем снова открыть ее от имени Маши и убедиться, что Маша не может читать данные из таблицы детали, но может просматривать данные без цены из этой таблицы через запрос;

    установить для Маши непустой пароль.

      1. Снятие защиты

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

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

    дайте пользователю Adminправа администратора, включив его обратно в группуAdmins;

    выдайте группе Usersполные права доступа ко все объектам базы данных;

    сделайте владельцем базы пользователя Admin;

    закройте и заново запустите MSAccess;

    зарегистрируйтесь в системе как пользователь Admin(в окне входа заменитеадмин наAdmin);

    задайте пользователю Adminпустой пароль.

    1. Создание mde-файла

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

Чем же отличается MDE-файл отMDB-файла?

MDE-файл является базой данных, в которой все программы, созданные вMDB-файле, сохранены в скомпилированном виде. Поэтому просмотр и редактирование исходных кодов невозможен. Кроме того, изменение таких объектов базы данных, как формы, отчеты и модули, также невозможен. Режим конструктора для них оказывается недоступным. Можно вносить изменения только в таблицы и запросы.

Если же какие-то недоступные в MDE-файле объекты потребуют доработки или изменения, то следует вернуться к сохраненномуMDB-файлу, сделать необходимые изменения, а затем заново создатьMDE-файл. Создать базу данных в видеMDE-файла можно, имея права администратора, так:

    открыть исходную базу данных (MDB-файл);

    исполнить команду меню

Сервис/Служебные программы/Создать MDE -файл ,

указав местоположение MDE-файла.

Файлы. MDEобычно создаются, когда разработчик хочет, чтобы пользователи не имели к исходному коду, а также к объектам интерфейса (формам и отчетам), и вмесе с тем разработчик не заинтересован в реализации полной системы обеспечения защиты на уровне пользователя. Хотя, если такая защита реализована в исходномMDB-файле, то она действует и вMDE-файле.

Резюме файла MDE

Согласно нашим записям, существуют два тип(ы) файлов, связанных с расширением MDE, самый популярный из которых отформатирован в качестве Compiled Access Add-in File . Самое распространенное связанное приложение - Microsoft Access , выпущенное Microsoft Corporation . Кроме того, два различные программы позволяют вам просматривать эти файлы. Расширение файла MDE указано преимущественно в категории Plugin Files .

Файлы MDE находятся на мобильных устройствах и настольных компьютерах, и их можно открыть в Windows и Mac. Рейтинг популярности файлов MDE составляет «Низкий». Это означает, что они не часто встречаются на большинстве устройств.

Подробную информацию о файлах MDE и программах, с помощью которых они открываются, см. далее. Кроме того, далее также представлены сведения о простых способах устранения неполадок, которые помогут вам открыть файл MDE.

Популярность типов файлов
Ранг Файла

Активность

Этот тип файлов по-прежнему сохранил актуальность и активно используется разработчиками и прикладными программными средствами. Хотя оригинальное программное обеспечение этого типа файлов может отодвигаться на второй план более новой версией (например. Excel 97 против Office 365), этот тип файлов по-прежнему активно поддерживается текущей версией программного обеспечения. Этот процесс взаимодействия со старой операционной системой или устаревшей версией программного обеспечения также известен как «обратная совместимость ».

Статус файла
Страница Последнее обновление


Типы файлов MDE

Ассоциация основного файла MDE

Файл MDE содержит Visual Basic для приложений (VBA) исходного кода. Кроме того, он сохраняет содержимое оных в файлах в скомпилированном, двоичном формате для того, чтобы защитить их.


Ассоциации других файлов MDE

MDE Файл позволяет добавлять дополнительные функциональные возможности и дополнительные возможности для образовательной версии ArchiCAD, информационного моделирования зданий (BIM) инструмента.


Попробуйте универсальное средство для просмотра файлов

В дополнение к продуктам, перечисленным выше, мы предлагаем вам попробовать универсальное средство для просмотра файлов типа FileViewPro. Данное средство может открывать более 200 различных типов файлов, предоставляя функции редактирования для большинства из них.

Лицензия | | Условия |


Устранение неполадок при открытии файлов MDE

Общие проблемы с открытием файлов MDE

Microsoft Access не установлен

Дважды щелкнув по файлу MDE вы можете увидеть системное диалоговое окно, в котором сообщается «Не удается открыть этот тип файла» . В этом случае обычно это связано с тем, что на вашем компьютере не установлено Microsoft Access для %%os%% . Так как ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его дважды щелкнув на него.


Совет: Если вам извстна другая программа, которая может открыть файл MDE, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.

Установлена неправильная версия Microsoft Access

В некоторых случаях у вас может быть более новая (или более старая) версия файла Compiled Access Add-in File, не поддерживаемая установленной версией приложения . При отсутствии правильной версии ПО Microsoft Access (или любой из других программ, перечисленных выше), может потребоваться загрузить другую версию ПО или одного из других прикладных программных средств, перечисленных выше. Такая проблема чаще всего возникает при работе в более старой версии прикладного программного средства с файлом, созданным в более новой версии , который старая версия не может распознать.


Совет: Иногда вы можете получить общее представление о версии файла MDE, щелкнув правой кнопкой мыши на файл, а затем выбрав «Свойства» (Windows) или «Получить информацию» (Mac OSX).


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

Установить необязательные продукты - FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия |


Другие причины проблем с открытием файлов MDE

Даже если на вашем компьютере уже установлено Microsoft Access или другое программное обеспечение, связанное с MDE, вы все равно можете столкнуться с проблемами во время открытия файлов Compiled Access Add-in File. Если проблемы открытия файлов MDE до сих пор не устранены, возможно, причина кроется в других проблемах, не позволяющих открыть эти файлы . Такие проблемы включают (представлены в порядке от наиболее до наименее распространенных):

  • Неверные ссылки на файлы MDE в реестре Windows («телефонная книга» операционной системы Windows)
  • Случайное удаление описания файла MDE в реестре Windows
  • Неполная или неправильная установка прикладного программного средства, связанного с форматом MDE
  • Повреждение файла MDE (проблемы с самим файлом Compiled Access Add-in File)
  • Заражение MDE вредоносным ПО
  • Повреждены или устарели драйверы устройств оборудования, связанного с файлом MDE
  • Отсутствие на компьютере достаточных системных ресурсов для открытия формата Compiled Access Add-in File

Опрос: Когда вы готовите свои ежегодные налоги, которые программой вы обычно используете?


Лучшие операционные системы

Windows (82.33%)
Android (11.56%)
iOS (3.43%)
Macintosh (1.71%)
Linux (0.60%)

Событие дня

Одним из наиболее популярных инструментов для сжатия файлов является расширением RAR файла. Разработка российского компьютерного ученого, Евгений Рошаль в 1993 году, формат RAR-файл ссылается на контейнер сжатия, который является значительно более эффективным, чем ZIP.



Как исправить проблемы с открытием файлов MDE

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

Например, на данном рисунке выделен файл my-file.mde , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл MDE с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

Иногда простая переустановка Microsoft Access может решить вашу проблему, правильно связав MDE с Microsoft Access. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.


Совет: Попробуйте обновить Microsoft Access до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


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


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


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

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


Совет: Если при попытке открыть файл MDE вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов MDE, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов MDE могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла MDE . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Compiled Access Add-in File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл MDE.


Если вы выполнили все описанные выше шаги , а ваш файл MDE по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

Попробуйте обновить память , чтобы узнать, поможет ли это открыть файл MDE. На сегодняшний день обновления памяти являются вполне доступными и очень простыми для установки даже для обычного пользователя компьютера. В качестве бонуса вы, вероятно, увидите хороший прирост производительности при выполнении вашим компьютером других задач.


Установить необязательные продукты - FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия |


1 Закройте базу данных. При работе в сети убедитесь, что база данных закрыта у всех остальных пользователей.

2 Выберите в меню Сервис команду Служебные программы и подкоманду Создать MDE-файл .

3 В диалоговом окне База данных для сохранения как MDE укажите базу данных, которую нужно сохранить как MDE-файл, и нажмите кнопку Создать MDE .

4 В диалоговом окне Сохранение файла MDE под именем укажите имя, диск и папку для базы данных.

Осторожно! Обязательно сохраните копию исходной базы данных. В базе данных, сохраненной как MDE-файл, нельзя изменять структуру форм, отчетов или модулей. Чтобы изменить структуру этих объектов, следует сделать это в исходной базе данных, а затем снова преобразовать ее в MDE-файл. Также нельзя запускать или преобразовывать базу данных, сохраненную как MDE-файл, в более поздних версиях Microsoft Access. В них можно открыть или преобразовать только исходную базу данных.

{ewc HLP95EN.DLL, DYNALINK, "Связь с Web или другими источниками":"achowMakeMDXFileW":1:"Foo":"Invisible"}

KФункционирование системы разрешений на доступ и их присваивание

Существуют два типа разрешений на доступ: явные и неявные. Разрешения называются явными, если они непосредственно присвоены учетной записи пользователя; такие разрешения не влияют на разрешения других пользователей. Неявными называются разрешения на доступ, присвоенные учетной записи группы. Пользователь, включенный в такую группу, получает все разрешения, предоставленные группе; удаление пользователя из этой группы лишает его всех разрешений, присвоенных данной группе.

При попытке пользователя выполнить какую-либо операцию с защищенным объектом базы данных его текущие разрешения определяются комбинацией явных и неявных разрешений на доступ. На уровне пользователей всегда действуют минимальные ограничения из налагаемых явными разрешениями для пользователя и для всех групп, к которым принадлежит данный пользователь. Поэтому простейшим способом управления рабочей группой является создание новых групп и определение разрешений на доступ для этих групп, а не для индивидуальных пользователей. После этого изменение разрешений для отдельных пользователей осуществляется путем добавления пользователей в группы или удаления их из групп. Кроме того, при необходимости предоставить новые разрешения, они предоставляются сразу всем членам группы в одной операции.

Изменять разрешения других пользователей на отдельные объекты базы данных могут следующие пользователи:

·члены группы «Admins», определенной в файле рабочей группы, который использовался при создании конкретной базы данных;



·владелец объекта;

·любой пользователь, получивший на этот объект разрешения администратора.

В ряде случаев пользователи, не имеющие разрешения на выполнение какого-либо действия, имеют возможность присвоить их себе. Такая ситуация имеет место для пользователя, являющегося членом группы «Admins» или владельцем объекта.

Владельцем объекта является пользователь, создавший этот объект. Изменить владельца объекта имеет возможность та же группа пользователей, которая может создать этот объект заново или изменить разрешения на доступ к этому объекту с помощью команды Пользователи и группы из подменю Защита (меню Сервис ). Для создания объекта заново нет необходимости начинать работу с нуля. Достаточно импортировать или экспортировать этот объект в другую базу данных или сделать копию объекта. Если требуется защитить всю базу данных, такой прием является простейшим способом передачи прав владельца на все объекты, в том числе и на саму базу данных. Наилучшую возможность защиты всей базы данных предоставляет мастер защиты, создающий новую базу данных и импортирующий в нее все объекты.

Примечание. Копирование, импорт или экспорт не приводит к изменению прав владельца для запросов, у которых свойство имеет значение «Владельца». Изменение владельца допускается только для запросов, у которых свойство При запуске предоставляются права (RunPermissions) имеет значение «Пользователя».

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

{ewc HLP95EN.DLL, DYNALINK, "Связь с Web или другими источниками":"acconTypesPermissionsHowTheyWorkSW":1:"Foo":"Invisible"}

Access creates databases in the .accdb file format. This format supports features such as multivalued fields, data macros, and publishing to Access Services.

You can convert databases that were created in Microsoft Office Access 2003, Access 2002, Access 2000, or Access 97 to the .accdb file format. Keep in mind, though, that a database in the .accdb file format cannot be opened or linked to by using versions of Access earlier than Access 2007.

In addition, the .accdb format does not support replication or user-level security. If you need to share your database with people who use Access 2003 or earlier, or if you need to use replication or user-level security, you must use the .mdb file format.

Note: Even though they share the same file format, some features in Access 2010 and newer versions cannot be used in Access 2007. For more information, see the section .

In this article

Convert an Access 2000 or Access 2002 - 2003 database to the .accdb format

To convert an Access 2000 or Access 2002 - 2003 database (.mdb) to the .accdb file format, you must first open the database by using Access 2007, Access 2010, Access 2013, or Access 2016, and then save it in the .accdb file format.

Convert an Access 97 database to the .accdb format

Starting with Access 2013, it’s no longer possible to directly convert an Access 97 database (.mdb) to the .accdb file format. However, you can open an Access 97 database in a previous version of Access, and then save the database in a format that Access 2013 can open. For example, here’s how to use Access 2003 to open an Access 97 database, then convert it to a format that can be opened by Access 2013:

    Open the Access 97 database in Access 2003.

    Click Tools > Database Utilities > Convert Database > to Access 2002-2003 file format .

    Enter a name for the database and click Save .

    Close Access 2003 and open Access 2013.

    Open the database and click File > Save As > Access Database (.accdb) > Save As > Save .

You can also use Access 2007 or Access 2010 to convert an Access 97 database to the .accdb format. When you open an Access 97 database in either of these two products, the Database Enhancement wizard appears to help convert the database to an .accdb format.

Use Access 2007 to open a database that was created or modified in newer versions

Because Access 2016, Access 2013, Access 2010, and Access 2007 all use the same file format, you can use Access 2007 to open a database that was created in Access 2010, Access 2013, or Access 2016 without first using the Save As command. However, Access 2016, Access 2013, and Access 2010 include some features that require Access 2016, Access 2013, and Access 2010 to run. Depending on the feature, one of the following might happen when you try to use the database in Access 2007:

    You cannot modify the object that uses the feature.

    You cannot open the object that uses the feature.

    You cannot open the database in Access 2007 at all.

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

Вступление.

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

Но не спешите разделить радость шефа. Может он не знает, что: "Разработка готового продукта стоит примерно в три раза дороже программы для собственных нужд (см. "Мифический человеко-месяц" Фредерика Брукса)". http://www.ashmanov.com/pap/obspro.phtml

И что для вас это означает работу, примерно вдвое большую, чем начальная разработка программы. Работу, которая включает в себя многое, не только доработку программы. Но и ее тоже. В частности, в программе надо сделать:
- специальный режим демоверсии;
- защиту от несанкционированного копирования.

В целом статья посвящена второму вопросу, но немного ниже будет сказано и о первом.

Принимаясь за придание программе товарного вида, вы вливаетесь в обширные ряды шароварщиков, у которых так много общих проблем, что для их обсуждения они создали свои клубы. Например, http://www.softshape.com/swrus/
Отмечу, что в числе шароварщиков акцессистов еще очень мало.

Режим демоверсии.

Для создания режима демоверсии обычно применяется один из двух методов:
- ограничение времени работы программы (стандарт - месяц);
- ограничение функций программы. Для Access чаще всего применяется ограничение количества записей в некоторых таблицах.

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

Если вы предоставите потенциальному покупателю демоверсию в формате mdb, то, вполне возможно, этим все и закончится. Или ваша первая продажа окажется последней. Причина изложена в статье "Защита баз mdb" . База легко вскрывается опытным акцессистом, ваш режим демо снимается и база переводится в рабочее состояние. Так же не исключено, что, по заказу приятеля-конкурента, другой программист, слегка поменяв внешнее оформление вашей программы, может приступить к ее распространению. Такие случаи были. Например, с программой TurWin. (http://www.arimsoft.ru/soft/turwin.shtml)

Так что, забудьте о продажах в формате mdb. Без формата mde в Shareware базах вам не обойтись. Но так ли он надежен, этот формат mde? Нельзя ли его перевести в формат mdb? Этот вопрос настолько часто повторяется на форумах по Access, что это уже есть предложения - повесить на входе в форум ответ: "Нельзя!". Но многие интересуются подробностями - "А почему, собственно, нельзя?".

О переводе формата mde в формат mdb.

Microsoft разработал формат mde именно как средство защиты объектов базы данных. Идея - дать формат базы, лишенный исходных кодов и быстрее исполняемый. Вроде формата exe по сравнению с программой в исходных кодах, написанной на С++.

Но пароль владельца базы mde получить также легко, как и для формата mdb. То есть таблицы, макро, запросы можете считать полностью доступными кому угодно. Защита форм и отчетов построена на значении одного(!) байта в файле (А-1997, А-2000). Если его обнулить, то и они полностью доступны для редактирования.
Не могу не отметить, что подход Microsoft к защите файлов Access близок к уровню полной безответственности. И это при наличии других систем, отвечающим требованиям защищенности уровня С-2 (Пентагон)!
Остаются скрытыми только исходные тексты модулей. В файле mde их действительно нет. Они заменены на так называемые Р-коды. Можно ли их перевести в исходные коды? Я думаю, что можно. Это чисто техническая, хотя и трудоемкая задача. Осложненная непрерывным изменением форматов Р-кодов не только для разных версий Access, но в разных сборках одной версии. Для примера, измените свойство базы Build и посмотрите на реакцию Access. Для А-1997 я менял его с 5903 на 03. Access сообщил о перестроении Р-кодов. Думаю, что по этим причинам, а также по причине чисто хакерского характера работы, она до сих пор не сделана. Так что Р-коды остаются последним не взятым бастионом в задаче перевода mde в mdb.
Остается надеяться на его стойкость и на то, что Microsoft когда-нибудь поменяет свое отношение к защите баз Access.

Итак, формат mde защитит вашу базу от наглого воровства и не даст перевести ее в рабочий режим из состоянии демоверсии. Второе - только в том случае, если вы хорошо спрятали данные, задающие режим демо. О том, как их хорошо спрятать - ниже.
Но он никак не защитит от установки вашей программы именно на пять, а не на восемь компьютеров. Что еще хуже, он так же не защитит от передачи вашей программы в другие фирмы. Например, ваш первый покупатель возьмет и подарит (или продаст по дешевке) вашу программу еще одной фирме. А та - дальше.
Тут надо принимать меры защиты. А защита есть только одна - привязка программы к компьютеру.

Как привязать программу к компьютеру.

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

1.Внести запись о программе и ее состоянии в реестр.
Это стандартный подход. Однако есть программы, отслеживающие все обращения к реестру и позволяющие найти и скопировать разрешающую запись. Далее ваша программа распространяется вместе файлом записи в реестр. Этим приемом часто пользуются, например, при несанкционированном лицензировании элементов ocx.

2.Создать в запрятанных местах файл(ы), выполняющие ту же роль, что и запись в реестр.
И на этот случай есть программы, отслеживающие все обращения к файлам, и позволяющие найти нужные и скопировать. Этот метод ничем не лучше записи в реестр.

3.Внести запись в нестандартное место (флеш-память, запасные треки на диске, пустые кластеры на диске, пометив из как испорченные, дописать свою информацию к стандартным программам и т.д).
Это путь вирусописателей. Идти вместе с ними не следует. К тому же вы неизбежно падете жертвой антивирусных программ.

4. Добавить к компьютеру уникальное устройство.
Не стоит перечислять эти устройства. Главный их недостаток - их надо доставлять покупателю. А если у вас продажи по Интернет? Нужна ли вам головная боль от проблем доставки этих устройств, а также от выхода их из строя? Как универсальное решение этот подход явно не применим. Хотя он широко рекламируется фирмами, производящими эти устройства.

Другое направление - не помечать компьютер, а найти и запомнить его уникальные характеристики. Это направление изложено в статье Сергея Литовского "Система регистрации копий программы". http://nsa.chat.ru/Secur_RegProg.html . По-моему, оно значительно лучше.

Список доступных характеристик компьютера, данный в этой статье, можно еще увеличить. Однако и приведенный там список слишком велик. Дело в том, что любое изменение контрольных характеристик приводит к тому, что ваша программа прекращает работу. Дальше покупатель обращается к вам, и вы должны принимать меры для разбора сложившийся ситуации, решая вопрос: "Воруют или нет?", и выходить из нее.
Например, первоначально моя программа запоминала название компьютера, название диска С и его SerialNumber. Однако название компьютера и даже диска пользователи меняют с легкостью необыкновенной. Не думая о последствиях, о которых их, естественно, предупреждали. В конце концов я остановился только на SerialNumber диска С.
Но и с ним не все просто. Это вовсе не заводской номер диска, а номер, присваиваемый ему программой форматирования. При новом форматировании он изменится. Изменится он также при применении некоторых программ сжатия информации на диске. Далее, иногда он меняется при переустановке Windows. Причем не всегда. Пока не удалось понять, при какой именно переустановке он меняется. У меня в системах NT4, Win98, Win2000, WinMe он оставался одним и тем же. Но пользователи сообщают об изменении номера при замене Win98 на Win98. Хотелось бы найти действительно неизменную характеристику. Например, настоящий заводской номер физического диска. Говорят, что он есть. Но найти метод его чтения не удалось. Буду благодарен за любую информацию в этом направлении.

Остановимся на SerialNumber диска С. Будем запоминать и проверять его. Тем более, что избежать ситуации изменения характеристик компьютера невозможно в принципе. Например, фирма купила новый компьютер и желает переставить на него вашу программу. Для программы это и есть принципиальное изменение всех характеристик компьютера. Это должно быть обязательно допустимо. Так что надо подумать о логической схеме работы с SerialNumber.

Основная схема работы системы регистрации копий.

Основная схема придумана давно:
- демоверсия сообщает покупателю код компьютера;
- покупатель посылает его продавцу вместе со своими данными;
- продавец генерирует ключ перевода программы в рабочее состояние и посылает его покупателю;
- покупатель вводит ключ и программа переходит в рабочее состояние.

Но это основная схема. Различных вариантов ее реализации можно сделать очень много.

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

Сначала мелочь. Сосем не обязательно при выдаче кода компьютера шифровать его SerialNumber. Никакой уникальной информации он не несет. Поэтому код компьютера может быть просто ему равен.
Еще о SerialNumber:
- в некоторых случаях SerialNumber имеет отрицательный знак. Выдавайте его абсолютную величину. Путаницы меньше, а надежность та же.
- для чтения SerialNumber лучше использовать функцию из kernel32.dll GetVolumeInformation (у Литовского именно так - правильно), а не FileSystemObject. FSO работает не всегда (NT4).

Теперь основное замечание. Из текста "Пример процедуры для стартовой формы" следует, что каждая клиентская часть по Литовскому имеет свой регистрационный номер. И каждая привязана к своему компьютеру. Назовем это статической привязкой. В этом случае вам придется запрашивать код и высылать ключ для каждого компьютера в отдельности. При этой привязке перенос клиентской части с компьютера на компьютер без вас тоже обойтись не может.
Но главная трудность не в этом. Издалека вам не разобраться, то ли ваш покупатель заменяет парк компьютеров, запросив пять новых ключей взамен старых, то ли он его просто наращивает, слегка обманывая вас, то ли вообще передает вашу программу другой фирме, обманывая вас уже по крупному. Старые ключи-то у него остаются всегда...

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

Программа обработки ключа должна:
- дешифровать ключ;
- сравнить SerialNumber с реальным;
- при совпадении записать в защищенную область (о ней ниже) базы с данными всю принятую информацию, дополнив SerialNumber именем компьютера. Имя компьютера имеет вспомогательное значение и используется для проведения деинсталляции.

Название организации - покупателя можно выводить в форме - заставке и в форме "О программе".

Далее, при старте любая клиентская часть должна прочитать SerialNumber своего компьютера и найти его в защищенной области. Если он есть, то программа молча работает дальше. Иначе она сравнивает количество записанных SerialNumber и количество лицензий. Если количество лицензий не исчерпано, то, после вопроса о правильности данной инсталляции, записывает новый SerialNumber и имя компьютера в защищенную область.
Таким образом, система учета даст возможность установить программу на любых пяти компьютерах сети и не позволит установить на шестой. Все клиентские части идентичны, что в свою очередь делает их Upgrade легко осуществимым.

Теперь нужно решить проблему переноса программы с компьютера на компьютер. Как указанно выше, она эквивалентна изменению SerialNumber какого-либо компьютера. Для этого дополним нашу программу системой деинсталляции. В программу включим форму, показывающую список имен компьютеров, на которых инсталлирована ваша программа. Список формируется, естественно, из данных, взятых из защищенной области. В форме сделаем кнопку "Деинсталлировать указанный компьютер". При ее нажатии из защищенной области удаляем указанный компьютер и его SerialNumber. Теперь, когда лицензия освободилась, покупатель может скопировать вашу программу на другой компьютер и запустить ее там. Программа проведет инсталляцию, чем и будет завершен процесс переноса. Таким образом, все перемещения покупатель может сделать сам, не обращаясь к вам. В том числе может сам бороться с последствиями изменения SerialNumber какого-либо компьютера. Он его деинсталлирует и установит заново. Забот у вас при применении динамической привязки станет несколько меньше.
Два замечания:
- удаление последней лицензии должно переводить программу снова в состояние демоверсии;
- если куплена лицензия только на один компьютер, то статическая и динамическая привязки совпадают. Но для Access работа на одном компьютере - не типичный случай. Да и разрешение на перенос (новый ключ) вы даете только на один компьютер, рискуя не очень многим.

При динамической привязке незаметно оказалась решена еще одна, ранее не указанная проблема: регистрация докупки лицензий. Если покупатель введет ключ с увеличенным количеством лицензий, то программа заменит содержимое защищенной области и будет заново инсталлировать компьютеры. Хотя здесь возможно иное решение: использование ключа другого формата, отрабатывая который, программа просто увеличит количество лицензий, допуская новые инсталляции.

Теперь вы готовы вести динамический учет компьютеров в сети. И программу, кажется, можно ставить покупателю.

Однако, что будет, если он решит подарить ее дружественной фирме? Для этого он деинсталлирует все компьютеры, кроме одного, и в этом виде передаст базу другой фирме. Далее инсталлирует свои компьютеры снова и будет работать как прежде. А дружественная фирма проведет инсталляцию своих компьютеров. То есть эта схема не защищена от незаконного копирования с разрешения законного владельца. Проблему надо решать. Отметим, что и в случае статической привязки она существует, только переносится на ваше усмотрение при обращении владельца за новыми ключами взамен старых. А ваше решение, как это не печально, в случае удаленности от фирмы-покупателя может быть только одно: дать ей новые ключи. То есть, в статической схеме от этой ситуации по существу защиты нет.

Защита от незаконного копирования с разрешения законного владельца.

Хочу отметить, что такая задача обычно шароварщиками не ставится и не решается. Принципиальное решение этой задачи заключается в том, чтобы считать и запомнить уникальную характеристику сети в целом. К сожалению, я не знаю такой устойчивой характеристики и буду рад о любой информации о ней. Реально применяю схему, которая тоже дает защиту, но с небольшой дырой.
Схема заключается в следующем:
- описание компьютера (номер, имя) пополняется еще одним полем - датой инсталляции;
- при вводе ключа системы дата для этого компьютера устанавливается нулевой, что означает "вечное" использование;
- если инсталляция происходит при запуске других программ-клиентов, то дата записывается равной текущей дате;
- при старте любой клиентской программы, как было указано выше, проводится поиск в защищенной области своего SerialNumber. При его нахождении дополнительно проверяется дата инсталляции. Если она равна нулю, то она обнуляется и у всех остальных компьютеров. То есть они становятся тоже "вечными". А если она не нулевая и прошло более 20 дней, то выводится предупреждение о незаконном копировании и рекомендация немедленно обратиться к продавцу. Через 31 день программа сообщает: "Незаконное копирование!" и прекращает работу.

Логика схемы: если все в порядке, то программа обязательно запускается со стартового (начального) компьютера, что приводит к "вечной" установке всех компьютеров и делает их равнозначными.

Если ваш покупатель передал программу в другую организацию, деинсталлировав все компьютеры, кроме одного, то в другой организации запуска с этого единственного "вечного" компьютера никогда не будет. А все другие компьютеры, инсталлированные в другой организации получат ненулевую дату. Далее сработает защита от незаконного копирования по дате инсталляции.
Дыру в схеме найдите сами.

Защита от хакера.

Вся система защиты построена на использовании SerialNumber. А ведь можно определить и перехватить обращение к чтению этого номера, и подсунуть программе известный правильный номер, имея лицензию хотя бы на один компьютер. Далее программу можно свободно распространять вместе с примочкой, подсовывающей правильный номер. Для программы это будет выглядеть как работа на одном компьютере при реальной работе многих. Не обманывайтесь мыслью, что увеличив число считываемых характеристик, вы защититесь от подмены. Можно перехватить и подменить чтение любых характеристик.

Но есть защита и от подмены. При запуске ваша программа получает номер процесса, который изменить нельзя, не нарушив работу Windows. Давайте запомним и его при старте программы, дополнив текущие характеристики компьютера. И будем его проверять, скажем, через каждые две минуты. Если он изменится, то для программы это будет означать, что на одном компьютере ваша программа запущена дважды. Осталось запретить такой запуск, предупредив об этом покупателя. Тем самым вы защититесь и от хакера.

Хранение учетной информации (защищенная область).

Хранить ее надо, как было сказано выше, в общей базе с данными. Можно использовать естественное место хранения - таблицу, а можно хранить в своих специально созданных Properties. Причем можно создать такие Properties, которые будут недоступны для программ печати свойств, построенных на их переборе. Например, Properties системной таблицы MSysQueries. Забавное свойство Access: распечатать нельзя, а напрямую читать и писать можно. Можно пойти еще дальше, используя Properties поля Expression системной таблицы MSysQueries. Так я вначале и сделал. Но оказалось, что это не здорово. Базы Access имеют свойство портиться. А один из методов восстановления - импорт данных. Но при импорте эти Properties не переписываются. Приходится установочную информацию либо вводить заново, либо переписывать спецпрограммой. То и другое осложняет жизнь. Лучшим выходом оказалось хранение информации просто в таблице, но в зашифрованном виде. Именно в шифрации и в контрольных суммах, учитывающих каждый байт хранимой информации, состоит защита установочной информации.

Особое внимание следует уделить алгоритму шифрации. Типичные ошибки демонстрирует статья Новикова и комментарий к ней Крамарева. http://nsa.chat.ru/Secur_Crypt.html . Если шифрация вскрыта, то все ваши усилия пойдут прахом. Рекомендую обратиться к алгоритму RSA: http://www.leadersoft.ru/subscribe/sub/sub32.htm . Хотя сам использую другой алгоритм. Но он пусть останется в тени.
В. Крамарев дал ссылку на хороший обзор методов шифрования:
http://www.ssl.stu.neva.ru/psw/crypto.html

Заключение.

Защита баз mde от незаконного копирования - необходимая, но не самая трудоемкая часть превращения вашей программы в товарный продукт. Вот еще некоторые другие: восстановление упавших баз ваших клиентов, решение проблем работы на мониторах с разным разрешением, Upgrade не только клиентской части, но и самой структуры данных и обеспечение работы со старыми структурами, автоматизация Upgrade в больших сетях, система настройки внешнего вида форм под вкусы разных пользователей, и, наконец, самая нелюбимая программистами часть - подробный контекстный хелп программы, учитывающий невысокую квалификацию ваших будущих пользователей.
Так что: "Не спешите разделить радость шефа" ...