Чтение из базы данных, расположенной в папке Program Files, с использованием ODBC

StackOverflow https://stackoverflow.com/questions/2707696

Вопрос

У нас есть приложение, которое хранит файлы своей базы данных во вложенной папке каталога Program Files.Эти файлы перенаправляются в VirtualStore в Vista и Windows 7.Мы представляем данные из базы данных с помощью Microsoft DataReports (VB6).Пока все идет хорошо.

Но теперь мы хотим использовать Crystal Reports XI для представления данных из базы данных.Наша идея состоит в том, чтобы НЕ передавать эти данные в CR из нашей программы, а заставить CR извлекать их из базы данных, используя системный DSN через ODBC.Таким образом, мы надеемся предоставить нашим пользователям больше гибкости при разработке их собственных отчетов.Однако мы хотим убедиться, что эти системные DSN настроены правильно, когда пользователь устанавливает нашу программу или когда программа вызывает Crystal Report.

Есть ли разумный способ сделать это, например, используя системные переменные, вместо того, чтобы писать процедуру, которая проверяет версию OS, включен ли UAC в ОС, сняты ли ограничения на запись в папке Program Files и т.д., А затем адаптирует системный DSN, чтобы указывать либо на C:\Program Папка Files\OurApp\Data или папка C:\Users\User\AppData\VirtualStore\Program Files\OurApp\Data?

Предложения по совершенно иному подходу тоже приветствуются!

Это было полезно?

Решение 3

Похоже, что виртуальный магазин заботится обо всем, что вы можете наклонно указывать DSN в C: Program MyApp data mydb.mdb, даже когда база данных была перемещена в виртуальный магазин.

Другие советы

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

Во время установки вы должны создать папку типа [CommonAppData] \Company\ App\ Full и установить защиту для этой папки, чтобы разрешить полный доступ всем (или пользователям).Поместите вашу базу данных в эту папку.

Для MDB вы можете удалить базу данных прямо здесь.Для клиент-серверной базы данных поместите UDL-файл вот.Также смотрите Используйте файлы Universal Data Link (.udl).

ODBC и DSNS - довольно устаревшие технологии.

Использование предложенных подходов должно работать практически на чем угодно, кроме самого старого компьютера Win95.

Это база данных доступа? Вы не указали.

Для базы данных доступа вам не нужно указывать на DSN в определенную базу данных при установке его. Вы можете изменить строку подключения, чтобы указать на разные базы данных во время выполнения (подробности). Например

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;

Можете ли вы просто прочитать путь установки во время выполнения (в VB6 это App.Path) А затем отправьте другую строку подключения к Crystal Reports?

Текущая версия


Возможно, вы захотите обнаружить Текущая версия Windows Система работает.

Это в свою очередь поможет вам определить правильный путь.

Как найти версию Windows, строить и ревизионные номера ??

Прочитайте ключи реестра -

HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT CurrentVersion CurrentBuildNumber
HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT CurrentVersion CurrentVersion
HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT Centreversion EditionID
HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT CurrentVersion productiD HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows NT currentversion buildlabex

CurrentBuildNumber - ваш номер сборки Windows. Тогда значение CurrentVersion - ваша версия Windows, т.е. версия вашей Windows 7, Windows Vista, Windows XP и т. Д. EditionId и ProductiD, чтобы узнать Windows-Edition и ID продукта.

Ключ BuildLabex содержит номер сборки и номер редакции.

Например, в стоимости 6001.17387.x86fre.vistass1_gdr.070927-1921,
первые четыре цифры подходят для номера сборки IE 6001 и
Следующие пять цифр подходят для номера ревизии Windows, т. Е. 17387.
X86 говорит вам, что вы используете 32-разрядную операционную систему.

Вы также можете быть заинтересованы в этом:
Как обнаружить истинную версию Windows?

Удачи!!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top