Question

J'ai un programme VB6 héritage qui installe un fichier d'accès dans un sous-répertoire du dossier de données communes (CSIDL_COMMON_APPDATA). Je suis maintenant installé ce programme sur un système Vista 64 bits, et le programme fonctionne très bien et donne accès au fichier C:. \ ProgramData \ Wow \ WowCat.mdb, mais ce fichier ne montre pas dans l'Explorateur Windows

Je veux écraser cette base de données, avec une version ultérieure, pris de mon ancien PC, mais en utilisant l'explorateur Je ne peux pas voir le fichier dans C: \ ProgramData \ Wow \ (je montre tous les fichiers cachés et système). Si j'aller de l'avant et la nouvelle copie WowCat.mdb de toute façon, le programme fonctionne encore avec l'ancien.

pas à pas le code dans VB, il ouvre sans aucun doute le fichier à: C: \ ProgramData \ Wow \ WowCat.mdb. Recherche C: conduire montre que la nouvelle copie, alors où est celui que le programme accède

Était-ce utile?

La solution

Ceci est dû à la redirection de dossiers dans Windows Vista. Si vous n'avez pas normalement le droit d'écrire quelque chose dans le répertoire C: \ Program Files-dossier, Vista silencieusement rediriger les écritures dans un dossier « secret » dans votre répertoire utilisateur. Le fichier sera toujours visible pour l'utilisateur qui a créé le fichier (et tous les programmes en cours d'exécution en tant que utilisateur), mais il ne sera pas visible pour quelqu'un d'autre. Donc, votre programme est probablement en cours d'exécution en tant qu'utilisateur différent de celui Explorer est, et donc Explorer ne peut pas le voir.

Voir la sortie suivante à partir du répertoire / aL sur ma machine Vista 64 bits:

C:\ProgramData>dir /aL
 Volume in drive C has no label.
 Volume Serial Number is 74DB-58F8

 Directory of C:\ProgramData

02.11.2006  16:41    <JUNCTION>     Application Data [C:\ProgramData]
02.11.2006  16:41    <JUNCTION>     Desktop [C:\Users\Public\Desktop]
02.11.2006  16:41    <JUNCTION>     Documents [C:\Users\Public\Documents]
02.11.2006  16:41    <JUNCTION>     Favorites [C:\Users\Public\Favorites]
02.11.2006  16:41    <JUNCTION>     Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
02.11.2006  16:41    <JUNCTION>     Templates [C:\ProgramData\Microsoft\Windows\Templates]
               0 File(s)              0 bytes
               6 Dir(s)  62 040 051 712 bytes free

La fonction est connue comme points d'analyse ou jonctions, selon l'endroit où vous lisez à leur sujet. Ils sont très semblables à des liens symboliques sous Unix.

Autres conseils

Faire cela nécessite bien un héritage ou Windows Installer MSI Installer le cours d'exécution élevé crée un sous-dossier CommonAppDataFolder, donne un contrôle total pour tout le monde (ou un groupe approprié) dans ce dossier, et enfin place votre MDB là-bas. Vous pouvez également créer le dossier, déplacez le fichier MDB là-bas, et définir des autorisations sur tout le fichier.

Il est également possible pour l'EXE lui-même pour le faire à la première exécution si elle est exécutée élevée ou détecte l'omission et engendre un processus élevé pour faire le travail. Les normes exigent que cette action doit être initié par un élément de menu ou bouton avec l'icône de bouclier UAC affiche cependant, et pas seulement apparaître une invite UAC.

Il est tout beaucoup plus facile via un package MSI bien.

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