La lecture à partir d'une base de données située dans le répertoire Program Files dossier à l'aide ODBC

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

Question

Nous avons une application qui stocke ses fichiers de base de données dans un sous-dossier du répertoire Program Files. Ces fichiers sont redirigés vers le VirtualStore dans Vista et Windows 7. Nous représentons des données de la base de données en utilisant Microsoft DataReports (VB6). Jusqu'à présent, si bon.

Mais nous voulons maintenant utiliser Crystal Reports XI pour représenter des données de la base de données. Notre idée est de ne pas transmettre ces données à CR de notre programme, mais d'avoir CR retreive à partir de la base de données en utilisant un un DSN système via ODBC. De cette façon, nous espérons présenter à nos utilisateurs une plus grande flexibilité dans la conception de leurs propres rapports. Ce que nous voulons nous assurer est bien que ces DSNs système sont configurés correctement lorsque l'utilisateur installe notre programme ou lorsque le programme appelle Crystal Report.

Y at-il une façon intelligente de le faire en utilisant les variables du système, par exemple, au lieu d'avoir à écrire une routine qui vérifie la version du système, si l'UAC est activé sur le système d'exploitation, si les restrictions d'écriture sur le répertoire Program Files dossier ont été levées, etc. et adapte alors il DSN système pour pointer vers le répertoire C: \ Program Files \ ourapp \ Data, ou C: \ Users de l'utilisateur \ AppData \ VirtualStore \ Program Files \ ourapp \ Data

Suggestions pour une approche tout à fait différente sont les bienvenus aussi!

Était-ce utile?

La solution 3

Il semble que magasin virtuel se charge de tout, vous pouvez pointer le DSN de façon flagrante dans C: \ Program Files \ MyApp \ Data \ mydb.mdb même si la base de données a été transféré à la boutique virtuelle.

Autres conseils

De nouvelles applications devraient avoir une application manifeste qui spécifie requestedExecutionLevel. Ceci déclare votre programme « Vista conscient » et court-circuite les tentatives de virtualisation.

Lors de l'installation, vous devez créer un dossier comme [CommonAppData] \ Société \ App \ et une sécurité ensemble sur ce dossier pour permettre la pleine accès par tous (ou par les utilisateurs). Mettez votre base de données dans ce dossier.

Pour un MDB vous pouvez déposer la base de données ici. Pour une base de données client / serveur a mis un fichier UDL ici. Voir aussi Utiliser Universal Data Link (.udl) Fichiers .

ODBC et technologies sont DSNs assez obsolètes.

En utilisant les approches proposées devraient travailler pour presque rien, mais le plus ancien ordinateur Win95.

Est-ce une base de données Access? Vous n'avez pas spécifié.

Pour une base de données Access, vous n'avez pas besoin de pointer votre source de données à une base de données spécifique lorsque vous l'installez. Vous pouvez modifier la chaîne de connexion pour pointer vers différentes bases de données lors de l'exécution (détails ). Par exemple

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

Pouvez-vous lire simplement le chemin d'installation lors de l'exécution (en VB6 il est App.Path), puis envoyer une chaîne de connexion différente de Crystal Reports?

Version actuelle


Vous pouvez détecter le système version actuelle de Windows est en cours d'exécution.

Cette volonté tour vous aider à déterminer la PATH correct .

Comment trouver la version Windows, les numéros de build et de révision ??

  

Lire les clés de registre -

     

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ CurrentBuildNumber    HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ CurrentVersion    HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ EditionID    HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ ProductId    HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ BuildLabEx

Le CurrentBuildNumber est Windows numéro de révision. Ensuite, la valeur CurrentVersion est votre version de Windows à savoir la version de votre windows 7, windows vista, windows xp, etc. EditionID et ProductId connaître les fenêtres édition et produit-id.

  

Le BuildLabEx clé contient le numéro de build et le numéro de révision.

Par exemple, la valeur 6001.17387.x86fre.vistasp1_gdr.070927-1921,
les quatre premiers chiffres représentent le numéro de build à savoir 6001 et
les cinq chiffres suivants représentent les fenêtres numéro de révision à savoir 17387.
x86 vous indique que vous exécutez un système d'exploitation 32 bits.

  

Vous pourriez également être intéressé par ceci:
   Comment détecter la version de Windows vrai?

GoodLuck !!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top