Я получил поддержку для приложения VB.Net WinForms, и компания, для которой я осуществляю поддержку, потеряла исходный код приложения. У меня есть установочный компакт-диск для приложения и шаги установки для сетевой установки:
- Скопируйте базу данных доступа для приложения в местоположение на сервере.
- Создайте общий ресурс в папке, содержащей базу данных, и предоставьте всем полный доступ.
- Установите приложение на клиентских компьютерах с помощью установки ClickOnce.
- При первом запуске приложения запрашивается местоположение базы данных. Если база данных находится в указанном месте, путь к базе данных сохраняется в реестре и используется для подключений к базе данных.
По декомпиляции сборки приложения я могу определить, что следующий код используется для установления соединений с базой данных (я бы предпочел, чтобы строка соединения была в настройках приложения, но, к сожалению, такой удачи не было).
OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
builder.ConnectionString = "Data Source=" + sDatasource;
builder.Add("Provider", "Microsoft.Jet.Oledb.4.0");
builder.Add("Jet OLEDB:Database Password", "....");
builder.PersistSecurityInfo = true;
gconn = new OleDbConnection(builder.ConnectionString);
Теперь проблема, с которой я сталкиваюсь, заключается в следующем: это приложение используется в колледже, и шаг 2 в настройке вызывает проблемы с безопасностью для колледжа, так как открытие папки до такой степени позволяет любому копировать и выполнять код на сервер. И в колледже есть опытные студенты, которые находят и используют такие проблемы безопасности. Можно ли каким-то образом ограничить доступ к папке, содержащей базу данных, чтобы учащиеся не могли копировать и выполнять код на сервере, но чтобы приложение все еще могло подключаться и использовать базу данных доступа? Помните, что на данном этапе у меня нет исходного кода для изменения строки соединения, используемой для соединений.
UPDATE:
Кто-то из моих знакомых предложил мне использовать Runas в командном файле для запуска приложения с конкретным пользователем в домене, а затем передать только права этого пользователя папке с базой данных доступа. Будет ли это возможным решением?