2016-03-09 2 views
0

J'écris une application WPF .NET (fwk 4.0) qui fait référence à log4Net et doit être installée dans le répertoire 'Program Files (x86)' sur un système d'exploitation Windows 7/8/10 64bits.Gestion des fichiers UAC et journaux

Les journaux d'application créés par l'application sont des fichiers créés dans Txt le sous-répertoire d'installation du 'Program Files (x86)'

Cette application utilise également sur le SQL Server CE 4.0 dans le même sous-répertoire.

C: \ Program Files (x86) \ MYAPP \ APP1 \ APP1.txt

C: \ Program Files (x86) \ MYAPP \ APP1 \ CEDatabase.sdf de

L'application est installée par un administrateur local. Pour démarrer l'application, un utilisateur standard est invité par l'UAC à démarrer avec un jeton d'accès élevé (privilèges d'administrateur) pour exécuter l'application car il ne démarrera pas autrement (je pense que ACL ne permet pas de créer et d'écrire des journaux) .

La génération de l'application WPF ne contient aucun manifeste d'application.

Mon client est frustré par le fait qu'un utilisateur standard ne peut pas démarrer l'application sans l'élévation UAC. De plus, il veut continuer à installer dans les 'Program Files (x86)'.

Que puis-je faire pour gérer cette situation?

Répondre

0

Je suggère fortement pas écrire les fichiers journaux au même endroit que vous installez votre application, mais plutôt à l'un des emplacements publics standard, auxquels vous pouvez accéder par des variables d'environnement.

Voir ce lien pour plus de détails sur la façon de mettre en Log4Net: How to specify common application data folder for log4net?

Les deux endroits communs pour se connecter à ce qui évite les restrictions du CCU sont: CommonApplicationData (https://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx) qui est un endroit où tous les utilisateurs peuvent écrire à, vous pouvez donc vouloir l'utiliser si vous voulez un emplacement de consignation commun, indépendamment de qui est connecté à Windows et exécute votre application.

LocalAppData (https://msdn.microsoft.com/en-us/library/windows/desktop/aa369768(v=vs.85).aspx) qui est un emplacement spécifié pour votre utilisateur actuellement connecté. Cela vous permettra de conserver vos fichiers journaux de différents utilisateurs Windows séparés les uns des autres.

Je ne suis pas sûr de savoir si vous auriez le même problème avec les écritures dans la base de données SQL Server CE. Le modèle que j'ai suivi dans le passé pour travailler avec UAC est d'installer tous les fichiers statiques sous Program Files, puis toutes les données sous l'un des 2 dossiers mentionnés ci-dessus selon que les données de l'application et la journalisation étaient par utilisateur ou par installation .

+0

Merci beaucoup pour vos conseils. Je vais implémenter ce que vous préconisez pour les fichiers journaux (CommonAppData) ou (LocalAppData). J'hésite à marquer votre réponse en tant que répondeur avant d'implémenter votre solution mais je reviendrai la marquer une fois que c'est fait. Merci encore pour votre aide! – user4953001

+0

Cela a parfaitement fonctionné pour les fichiers log4Net. Si cela aide quelqu'un d'autre, j'ajoute également pour installer mon fichier SQL CE 4.0 .sdf dans le dossier CommonAppData afin que la connexion CE soit établie lorsqu'elle est appelée sous un processus utilisateur non élevé. Merci encore, – user4953001