Question

Quel est le bon endroit pour stocker des fichiers de données de programme identiques pour tous les utilisateurs mais devant être inscriptibles pour le programme? Quel serait l'emplacement équivalent sur MS Windows XP? J'ai lu que C: \ ProgramData n'est pas accessible en écriture après l'installation par des utilisateurs normaux. Est-ce vrai? Comment puis-je récupérer ce répertoire par programme à l'aide du Kit de développement Platform SDK?

Était-ce utile?

La solution

SHGetFolderPath () avec le CSIDL de CSIDL_COMMON_APPDATA.

Pour en savoir plus, consultez la http://msdn.microsoft. .com / fr-us / library / bb762181 (VS.85) .aspx

Si vous avez besoin du chemin d'accès dans un fichier de commandes, vous pouvez également utiliser la variable d'environnement% ALLUSERSPROFILE%.

Autres conseils

Il existe un bon résumé des différentes options ici: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead -of-programme-fichiers.aspx

  

Où devrais-je écrire les données du programme   Au lieu de Program Files?

     

Une mise à jour commune du code de l'application est   ceci: "mon application écrivait   fichiers pour programmer des fichiers. C'était comme   aussi bon endroit pour le mettre comme tout   autre. Il y avait le nom de mon application sur   déjà, et parce que mes utilisateurs étaient   admins, cela a bien fonctionné. Mais maintenant je vois   que cela peut ne pas être un aussi bon endroit   coller les choses comme je le pensais,   car avec UAC même les administrateurs   exécuter avec les privilèges standard d'utilisateur   la plupart du temps. Alors, où devrais-je   mettre mes fichiers à la place? "

Vous pouvez utiliser:

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);

Voir l'article de Raymond Chen sur cette question spécifique .

En bref, vous demandez un trou de sécurité .

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