2009-07-20 10 views
1

Mon programme nécessite que certains détails de configuration soient conservés dans un fichier .ini. Ce programme installe également des extensions à IE et firefox et je veux lire ces fichiers .ini à partir de ces extensions également. Si je gardais .ini dans "... AppData/Roaming ..." l'extension IE en mode protégé ne pourra pas lire/écrire. Pour autant que je sache, seul AppData/LocalLow peut seulement lire en mode protégé. Si je transfère tous mes détails de configuration à ce "... AppData/LocalLoe ..." cela fonctionnera-t-il tout le temps? Est-ce le moyen standard? tout ce que j'ai écrit est dans le contexte de Vista, cela fonctionnera-t-il avec XP? Win7?Quel est le meilleur emplacement pour conserver le fichier de configuration du programme sous WINDOWS?

Répondre

0

Voir ma réponse à cette question: How to decide where to store per-user state? Registry? AppData? Isolated Storage?

de citer là:

fichiers dans l'utilisateur dossier « Roaming » dans Vista ou « Application Data » dans XP se déplacer avec l'utilisateur - de sorte que tout les paramètres et les données doivent y être stockés.

Les fichiers sous "Local" et "LocalLow" dans Vista et les "Paramètres locaux" dans XP ne le sont pas, c'est donc un bon endroit pour les fichiers temporaires, liés à l'ordinateur spécifique ou aux données recalculables. Dans Vista, dans le cadre des nouvelles fonctionnalités de sécurité que nous connaissons et aimons tous, vous pouvez avoir des programmes fonctionnant en "mode faible intégrité" (par exemple IE en mode protégé), ces programmes fonctionnent avec des privilèges réduits et peuvent ' t accéder aux fichiers dans le profil de l'utilisateur - à l'exception des fichiers situés dans le dossier "LocalLow". Donc, en conclusion, les fichiers stockés dans "LocalLow" sont intrinsèquement non sécurisés et les fichiers dans "Local"/"Local Settings" sont susceptibles d'être indisponibles dans certaines grandes entreprises - donc à moins d'avoir de bonnes raisons et de savoir exactement ce que vous vont avec "Roaming"/"Application Data".

MISE À JOUR:

  1. Lorsque l'itinérance de profil est utilisé (grande coopération environnements) le contenu des pouvoirs locaux et LocalLow peut (et) disparaître sans préavis.
  2. Ce sont tous les paramètres par utilisateur, si votre serveur s'exécute sous un compte différent de l'utilisateur (par exemple, le système ou le réseau), ils auront des copies différentes de ces dossiers.
+0

Merci pour votre réponse. Mon application principale est un petit serveur web et nous avons une extension à IE ainsi que Firefox. Nous devons donc garder le port sur lequel le serveur web fonctionne dans .ini et l'extension devrait être capable de le lire afin que nous puissions encadrer l'URL correcte. Si je garde en itinérance le mode protégé IE ne sera pas en mesure de le lire, et si je le garde dans LocalLow, je ne suis pas en mesure de trouver une interface XPCom (scriptable) pour trouver le chemin du dossier LocalLow. – Manoj

+0

Je ne sais rien à propos de XPCom donc je ne peux pas vous aider avec cela, comme jia3ep dit, l'API Win32 pour obtenir le chemin est SHGetKnownFoldedPath. – Nir

+0

Voir ma mise à jour pour certaines choses à considérer – Nir

0

Pour obtenir le chemin du dossier pour les données du programme, vous devez utiliser WinAPI:

wchar_t path_buf[MAX_PATH]; 
SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0]); 

En fonction Windows Vista SHGetFolderPath a été remplacé par SHGetKnownFoldedPath. Cette ancienne fonction est maintenant simplement un wrapper pour SHGetKnownFolderPath.

Questions connexes