Приложение C++ MDB в ProgramData копирует в папку AppData пользователя, когда я этого не хочу
У меня есть программа C++, которая подключается к базе данных Access через соединение системы DSN OBDC. Этот DSN - это путь к MDB в папке ProgramData. Когда пользователь A запускает приложение, он копирует этот файл MDB в свою папку AppData\Local и любые обновления в MDB, которые делает приложение, он делает в тот же файл в своей папке AppData. Это не хорошо, потому что если пользователь B запускает приложение, я хочу, чтобы они увидели изменения, которые пользователь A внес в MDB.
1) Есть ли способ заставить его НЕ копировать MDB в свою папку AppData, а вместо этого просто использовать тот, который находится в ProgramData?
2) Я делаю это правильно? Должен ли я поместить MDB в другое место, отличное от ProgramData, где оно будет правильно предоставлено?
3) Нужно ли, чтобы мое приложение при запуске сравнивало временные метки для MDB? При запуске я мог получить его из ProgramData, а когда он закроется, я мог бы записать его обратно в ProgramData? Это похоже на взлом, и я даже не знаю, будут ли проблемы с разрешениями
2 ответа
Этот пост имеет отношение к комментарию ОП и предыдущему ответу Густава:
Используйте (подпапку) общей папки%Public%, которая указывает на C:\Users\Public.
Я не эксперт по установке Inno, но я не думаю, что существует предопределенная константа для "C:\Users\Public". Но если вам нужна только константа, вы всегда можете это сделать.
Создайте константу с помощью макроса #define в самом верху вашего скрипта, такого как этот.
#define sf "C:\Users\Public"
И вы можете использовать его в своем сценарии, где вы хотите. Пример:
[Files]
Source: "app.exe"; DestDir: "{#sf}\MyApp\";
Использовать (подпапку) общей папки, %Public%
который направляет в C: \ Users \ Public.