approche universelle pour le stockage des paramètres de type INI et / ou fichiers DB sur plusieurs machines Windows

StackOverflow https://stackoverflow.com/questions/691979

Question

OK, vraie confession première: Peut-être juste moi, mais parfois « les meilleures pratiques pour les paramètres du programme » sur les machines Windows se sent comme il a changé plus que les stratégies d'accès aux données de Microsoft. Je suis toujours en cours d'exécution XP, et quelque part le long du chemin tout genre « vitreux » sur l'endroit où MS me voulait stocker toutes les données de mon application, etc. Je contrôlais toutes les machines que je Codé pour, donc il vraiment n'a pas d'importance.

Maintenant, je vous écris pour des applications « dans la nature », le soutien Win98 sur place. Je dois faire attention à tout cela à nouveau. : - \

Pour des raisons ayant trait à la plupart du temps avec une migration facile vers de nouveaux ordinateurs, je ne suis pas un grand fan de l'utilisation du registre des paramètres de l'application - Je préfère utiliser les fichiers INI, et ont des composants INI anciens que j'utilise pour la tâche (Raize, en général). Je suis ouvert aux suggestions d'autres composants tiers, s'ils vont faire cela plus facile / moins de tracas.

En fait, je dois stocker les paramètres d'applications (comme souvenir paramètres d'option, etc.).

J'ai lu: vs fichier INI pour stocker les paramètres d'application configurables par l'utilisateur
Où stocker les paramètres du programme au lieu de HKEY_LOCAL_MACHINE?
Où que mon programme win32 garder ses fichiers?
Le meilleur endroit pour stocker les fichiers de configuration et les fichiers journaux sur Windows pour mon programme?

... donc au moins je ne suis pas seul dans cette question ...; )
(W / excuses pour ce qui est un peu une question de répétition, mais sous un angle légèrement différent).

On dirait que je peux utiliser% APPDATA% / MyProgram et stocker toutes les données là-bas, et est-ce toujours vrai dans toutes les saveurs de Windows de Win98 sur place? Sinon, quelle est la meilleure approche, et quand cette approche vient à l'existence?

Ce que je suis vraiment pour, honnêtement, est la meilleure façon de faire de ce problème disparaîtra - Je veux juste un (si possible), simple, facile, fiable pour saisir « dossier de données de mon programme » dans tous les et toutes les instances. Est-ce que ce qui précède accomplir cela?

Était-ce utile?

La solution

Rendez-vous sur Faire des programmes Delphi Vista-Ready et défilement vers le bas pour: « Où enregistrer vos données d'application? »

  fonction

GetRoamingUserAppDataPath: string;   // fonctionne aussi longtemps que les gens ont au moins IE 4. (et Win95 ou mieux)

Autres conseils

% APPDATA% ne semble pas être présent sur Win95. J'utilise SHGetSpecialFolderPath qui est disponible sur Win98 ou Win95 w / IE4.

Les réponses que vous avez obtenu à ce jour sont bons, je pense cependant que vous mélangez les choses dans votre question qui ne vont pas ensemble, il est donc impossible de répondre complètement à votre question.

Votre question indique le titre

  

Paramètres INI de type et / ou fichiers DB

et ceux-ci peuvent être deux choses tout à fait différentes. Vous devez faire la différence entre les fichiers qui sont par utilisateur, les fichiers qui sont communs pour tous les utilisateurs, mais en lecture seule et les fichiers communs que chaque utilisateur doit être en mesure de travailler avec.

La première catégorie est facile, utilisez un répertoire approprié sous l'un des CSIDL_APPDATA ou CSIDL_PERSONAL dossiers.

La deuxième catégorie est également facile, les fichiers doivent tout simplement être installé dans l'emplacement approprié par le programme d'installation, qui doit être exécuté avec des autorisations appropriées, car les utilisateurs standard (limité) ne seront pas en mesure d'écrire sur les emplacements corrects.

La dernière catégorie est cependant difficile, parce qu'il n'y a tout simplement pas un répertoire dans toutes les installations Windows qui peuvent être supposées être inscriptible pour tous les utilisateurs. Surtout dans les milieux d'affaires avec des comptes utilisateur verrouillé, il peut être que l'utilisateur n'a pas les permissions d'écriture pour le disque locale à tous, pour leur répertoire utilisateur quelque part sur un serveur dans le réseau. Il n'y a donc aucun moyen simple et unique pour saisir cet emplacement de données pour votre programme et assurez-vous qu'il fonctionne -. Il est quelque chose que vous aurez peut-être revoir tous les programmes et tous les cas d'utilisation ANEW

Pour les points de bonus, vous devez également toujours examiner si les fichiers doivent être placés dans le profil itinérant et être disponibles sur toutes les machines dans un domaine, ou

si elles sont spécifiques à la machine.

Un conseil que je donnerais est de passer des fichiers de base de données de style de bureau comme Paradox ou fichiers d'accès pour les applications qui ont besoin de partager des données entre les utilisateurs sur une machine. Seulement avec de vrais serveurs de base de données (locales) vous serez en mesure d'avoir des données multi-utilisateurs sur les comptes / machines de verrouillés.

Je ne peux pas dire si cela fonctionne sur toutes les versions, mais je suis d'accord que les fichiers .ini sont la bonne réponse. Lorsque XP a dit d'utiliser le registre que je l'ai essayé - pour un programme. déploiement en interne a montré que les paramètres nécessaires à copier d'une machine à - la prochaine mise à jour était de retour aux fichiers .ini

.

Je pense que l'ensemble bit de registre est une mesure anti-piratage de leur qu'ils voulaient cacher comme une meilleure pratique.

J'ai tendance à utiliser des fichiers xml% AppData% pour maintenir mes paramètres. Seulement vraiment parce que XML est plus facile que ini est pour C #. Quoiqu'il en soit,% APPDATA% ne semble une valeur sûre.

Je ne peux pas conseiller si 98SE supporte.

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