titre_site.jpg (51607 octets)

_app.useUACPaths

Propriété apparue avec la version dBase 2.70 afin de permettre une meilleure comptabilité avec les versions Vista et suivantes de Windows.Ceci indique si dBASE ou une application dBASE doit suivre des règles de l’UAC. (Pour savoir sur une machine sous Vista comment régler l'UAC , voir le site de Jean-Claude Bellamy)

 

Contexte

Vista et Windows 7 s’attendent à ce que les applications adhèrent à certaines conventions afin de faciliter que Windows empêche des fichiers programmes d’être modifiés ou corrompus - par l’erreur d’un utilisateur ou par des utilisateurs malveillants ou par des virus.

Les Programmes qui ne suivent pas ces conventions sont sujets à un examen plus minutieux par Windows avant que le programme soit lancé (par l’intermédiaire des mécanismes de Windows User Access Controls (UAC)) et que Windows puisse déclencher des avertissements supplémentaires ou que Windows empêche le programme de s’exécuter (selon les droits d’accès de l’utilisateur, les définitions actuelles de Windows et de la configuration desfichiers manifest pour l’application).

useUACPaths donne la capacité à dBASE Plus d’adhérer aux conventions de Vista et de Windows 7 en ce qui concerne l’emplacement où dBASE Plus crée et stocke son dossier .ini (contenant les définitions de l’utilisateur), où dBASE demande au BDE de créer ses fichiers temporaires et le chemin par défaut pour la session au démarrage de dBASE.

Pendant le démarrage, dBASE et les applications de dBASE détermineront es paramètres des useUACPaths (comme décrit ci-dessous) et puis vérifieront les useUACpaths pour déterminer l’emplacement de différents fichiers dont plus.ini ou le dossier.ini d’une application.

Quand l’indicateur est à Faux (False), dBASE et les applications dBASE définira les emplacements des fichiers .ini, des fichiers utilitaires de conversion, incluant des fichiers, divers fichiers exemple, et des fichiers temporaires dossiers dans des dossiers utilisés dans les versions antérieures de dBASE.

Quand l’indicateur est à vrai (True), dBASE définira les emplacements pour les fichiers .ini, des utilitaires de conversion, les fichiers Include, divers fichiers exemples, et les fichiers temporaires aux dossiers dans l’arborescence du dossier privé de l’utilisateur actuel selon les exigences de l’UAC de Windows. dBASE détermine le chemin de l’arborescence du dossier privé de l’utilisateur en recherchant le chemins spécial du dossier Windows suivant : CSIDL_LOCAL_APPDATA et CSIDL_ APPDATA.

Fonctionnement

Comment _app.useUACPaths est défini au démarrage de dBASE Plus (Plus.exe) ou d' une application .exe (Plusrun.exe) :

 

Pendant le démarrage de plus.exe :

- il vérifie si l’enregistrement HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et s’il est positionné à y ou à Y

Si oui,

    Défini _app.useUACPaths à True

Autrement,

   Défini _app.useUACPaths à False

- Ensuite, il vérifie si le commutateur -v, a été passé à plus.exe sur la ligne de commande, qui surchargerait le paramètre par défaut ci-dessus.

Si oui,

Si -v1 (ou - V1) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à True

Si - v0 (ou -V0) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à False

 

En résumé pour plus.exe :

Si une clé de registre useUACPaths existe pour dBASE Plus, elle définit le statut par défaut pour _app.useUACPaths. Si cette clé n’existe pas, _app.useUACPaths est défini à False.

Si le commutateur -v est passé sur la ligne de commande, il surchargera le paramétrage par défaut ci-dessus.

 

Pendant le démarrage de plusrun.exe

Il vérifie si la clé de regisre HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\series1\useUACPaths existe et si elle est positionnée sur y ou à Y.

Si oui,

   Défini _app.useUACPaths à True

Autrement,

   Défini _app.useUACPaths à False

- Ensuite, il vérifie si, sur la ligne de commande, le commutateur -v a été passé à plus.exe (ou une application .exe) qui surchargerait le paramètre par défaut ci-dessus.

Si oui,

Si - v1 (ou - V1) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à True

Si - v0 (ou - V0) a été trouvé sur la ligne de commande,

   Défini _app.useUACPaths à False

- Si aucun commutateur -v n’a été passé par l’intermédiaire de la ligne de commande plusrun.exe examine dans le registre afin de s’assurer qu’aucune clé spécifique à l'application ne définisse useUACPaths : HKEY_LOCAL_MACHINE\SOFTWARE\dBASE\PLUS\RuntimeApps\<app file name>\useUACPaths

 

Si cette clé est trouvée, elle surcharge la définition par défaut effectuée par l’intermédiaire de la clé de registre dBASE\PLUS\series1

Si positionné à y ou à Y

   Défini _app.useUACPaths à True

Si positionné à n ou à N

   Défini _app.useUACPaths à False

- Si aucun commutateur -v n’a été passé par l’intermédiaire de la ligne de commande ET si aucune clé du registre de RuntimeApps n’a été trouvée pour l’application, alors l’application .exe est vérifiée pour voir si une définition est incluse pour positionner _app.useUACPaths à True.

    Si une instruction incorporée à l’UAC (embedded UAC flag) est trouvée

       Défini _app.useUACPaths à True

 

En résumé pour une application .exe :

Si une clé du registre useUACPaths existe pour dBASE Plus, elle est utilisée pour définir par défaut app.useUACPaths. Si cette clé n’existe pas, _app.useUACPaths est positionné à False.

Si une application .exe est construite avec une définition incluse pour l’UAC, la définition incluse surchargera la position globale pardéfaut réglée par dBASE Plus ci-dessus.

Si une clé spécifique du registre de l’application existe, sa définition surchargera la définition de la clé du registre de dBASE Plus et la définition incluse de l’UAC de l’application .exe (si une clé existe).

Si le commutateur -v est passé sur la ligne de commande, il surchargera toutes les définitions ci-dessus.

Items affectés par _app.useUACPaths
Pendant le démarrage, dBASE PLUS ou dBASE PLUS Runtime contrôle _app.useUACPaths pour les items suivants

Définition de l’emplacement par défaut de plus.ini ou d’un fichier .ini de l’application

Quand useUACPaths est à true, dBASE Plus plus.ini ou un fichier .ini de l’application chargera à partir de l’arborescence locale du dossier d’un utilisateur plutôt que du même dossier venant de plus.exe ou d’une application .exe qui a été déjà lancée.

Premièrement Plus.exe ou plusrun.exe s’assurera que les dossiers suivants existent et les créent s’ils n’existent pas encore :

Pour PLUS.EXE:

<CSIDL_LOCAL_APPDATA>\<dBASE Plus subpath>\Bin

<CSIDL_APPDATA>\<dBASE Plus subpath>\Bin

Pour une application .exe:

<CSIDL_LOCAL_APPDATA>\<application launch subpath>

<CSIDL_APPDATA>\<application launch subpath>

<.. subpath> Pour dBASE PLUS IDE et une Application dBASE Plus est évalué comme suit...

- Si le chemin de lancement contient soit "\Program Files" ou "\Program Files (x86)", le subpath de lancement est défini par la partie du chemin de lancement restant, une fois que la partie contenant "\Program Files" ou "\Program Files (x86)" est enlevée.

Par exemple :

   Si dBASE plus est installé dans le dossier :

         C:\Program Files\dBASE\Plus

   <dBASE Plus subpath> sera défini par :

         \dBASE\Plus

   Si une application .exe est installée dans le dossier :

        C:\Program Files\VotreSociété\VotreApp

   <application launch subpath> sera défini par :

         \VotreSociété\VotreApp

- Si le chemin de lancement NE contient pas "\Program Files" ou "\Program Files (x86)", alors le <.. subpath> est défini par le chemin restant après élimination de l’identificateur de lecteur et des deux points ou élimination du chemin UNC de niveau supérieur du chemin de lancement.

Par exemple :

   Si dBASE Plus est lancé depuis :

         C:\dBASE\PLUS

   <application launch subpath> sera défini par :

         \dBASE\PLUS

   Une application réalisée avec dBASE Plus est lancée de :

         \ \VotreCheminUNC\VotreSociété\VotreApp

   <application launch subpath> est défini par :

      \VotreSociété\VotreApp

Ensuite plus.exe ou plusrun.exe s’assurera qu’un fichier .ini est chargé comme suit :

Il cherche le fichier ini dans le chemin passé par l’intermédiaire d’un commutateur –C

   S'il le trouve, il charge .ini à partir de ce chemin

   S'il ne l'a pas trouvé,

       Il cherche .ini dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

  Si non trouvé,

     Il cherche.ini dans <CSIDL_COMMON_APPDATA>\<.... subpath>[\Bin]

        Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Si non trouvé,

Il cherche .ini dans le chemin de lancement de l’EXE

    Si trouvé, il copie dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Si non trouvé,

Il crée le nouveau dossier plus.ini dans :

<CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

Le fichier .ini ouvert est maintenant situé dans <CSIDL_LOCAL_APPDATA>\<.... subpath>[\Bin]

 

Détermine si oui ou non : :dBStartup:InitNewUser.pro est lancé la première fois par un utilisateur particulier qui lance dBASE Plus (ou une application de dBASE).

Dans dBASE Plus, InitNewUser.pro créera les copies privées des divers dossiers de convertisseurs et exemples comme suit :
Converters
dBLClasses
dQuerySamples
Include
Media
Samples
Web

Dans une application dBASE, un InitNewUser.pro personnalisé peut être utilisé pour effectuer des tâches personnalisées lors de l’installation d’un nouvel utilisateur.

Définition des chemins Source Alias pour faire correspondre les emplacements privés pour les Sources Alias suivantes :
DOS5Conv
Examples
FormControls
Forms
Images
Movies
Nonvisual
Output
ReportControls
Reports
Samples
Toolbars
Webwizards

Détermine les chemins par défaut des Alias du BDE pour les noms d’Alias suivants :
dBASESamples
dQuerySamples
dBASEContax
dBASESignup
dBASETemp
dQueryTemp

Utilisé par dQuery pour déterminer l’emplacement de :
dquery.ini
dquery temporary files
My DataModules folder

Emplacements par défaults à utilier par l’Explorateur de Projet pour déterminer l’emplacement de :
projexp.ini
Project Explorer temporary files
My Projects folder

Utilisé par l'Assistant Web pour déterminer l’emplacement pour ses fichiers temporaires.

 

 

Code      Plus2_5-Icon.jpg (1250 octets)

Une fonction pour tester la présence de cette propriété.

function IsDbaseUACSupported()
  return (type([_app.useUACPaths]) # [U])

 

ico_duflp.gif (1875 octets) dUFLP :

Vous pouvez trouver un exemple d'utilisation dans applicationIni.cc, bdealias.cc, ccs_BDE.cc et rmAlias.cc qui souvent vérifient si cette propriété est supportée.

 

bug_jpg.jpg (2635 octets)  Les difficultées rencontrées

A ce jour (août 2013), il ne semble pas y avoir de difficulté particulière avec cette propriété.

 
 

retour

Sources :

Guide de l'utilisateur dBase 2.80

dUflpPlus_AB.zip

Retour à l'accueil

Les informations de cette page sont données à titre indicatif et ne se substituent pas à celles contenues dans l'Aide de votre version de dBase qui reste la meilleure documentation.


Si vous voyez des erreurs, ou souhaitez apporter des compléments, n'hésitez pas à le signaler.
Dernière modification : mercredi 04 septembre 2013

©  M.Abraham.