5

J'ai une application winforms qui a besoin d'écrire des journaux. L'application doit également fonctionner sans avertissements UAC et en utilisant un compte non-administrateur.Où est un endroit sûr pour stocker des fichiers journaux compatibles avec XP, Vista et Windows 7?

Où puis-je écrire mes journaux sans aller à l'encontre des paramètres de sécurité par défaut? En outre, cela doit fonctionner sous Windows XP, Vista et 7.

Points supplémentaires si tous les utilisateurs peuvent écrire dans le même ensemble de fichiers journaux.

Répondre

6

Vous ne pouvez pas (ne devriez pas) coder en dur le chemin. Au lieu de cela, demandez à Windows où le stocker en appelant SHGetFolderPath, qui peut être utilisé pour renvoyer l'emplacement du répertoire AppData de l'utilisateur actuel (ou de tous les utilisateurs).

article MSDN, avec une solution C: http://support.microsoft.com/kb/310294

Exemple utile Delphi: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

Notez qu'il est dangereux de faire une requête unique pour le chemin, convertir en une chaîne absolue, et stocker cela dans vos paramètres. Parce que Windows peut le changer. Ils peuvent rejoindre un domaine, mettre à jour des fenêtres, etc., et les fenêtres peuvent en effet déplacer vos fichiers. Si vous pointez alors sur l'ancien emplacement, sans demander à nouveau "où est ce dossier", vous vous casserez. Été là, fait que ...

1

En utilisant SHGetFolderPath vous avez la possibilité d'utiliser des répertoires de fichiers de journal par utilisateur ou global. Si vous utilisez CSIDL_COMMON_APPDATA, alors: "Cette information ne se déplacera pas et est disponible pour toute personne utilisant l'ordinateur." ce qui ressemble à ce que vous voulez.

Questions connexes