2009-07-10 8 views
2

Je suis à la recherche d'un point de départ acceptable pour placer les paramètres des applications dans une machine Windows. J'ai plus d'une application. pour des raisons personnelles, je ne voudrais pas utiliser le registre: je préfère les fichiers d'initialisation en texte brut (.ini). Je n'ai pas envie de conserver les fichiers dans le même répertoire que les exécutables, la situation idéale me permet de les garder quelque part où les utilisateurs ou les administrateurs système sont autorisés à écrire.où placer les fichiers d'initialisation dans Windows

à droite, je ne suis pas un utilisateur de Windows, ma première estimation serait $HOME/.my_company_name et /etc/my_company_name, mais y a-t-il quelque chose de conceptuellement équivalent à ces endroits dans Windows?

juste regarder dans la sortie SET et deviner:

 
%APPDATA% 
%HOMEDRIVE%%HOMEPATH%\Local Settings 
%SYSTEMROOT% 

par le chemin: Je dois encore vérifier si ces variables existent toujours à partir d'un service Windows ...

Répondre

4

Je pense que AppData est ce que tu veux.

Vous pouvez utiliser SHGetFolderPath (à partir de SHFOLDER.DLL) pour obtenir ce par programme.

De MSDN 'Data and Settings Management' (voir la section 4.2 «Classifier correctement et les données application magasin):

TCHAR szAppData[MAX_PATH]; 
… 
hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szAppData); 

Append [company name]\[product name]\[version] à szAppData en utilisant PathAppend:

PathAppend(szAppData, "Company\Product\1.0\File.ini") 

Il est également CSIDL_COMMON_APPDATA pour les non-utilisateur spécifique données et CSIDL_LOCAL_APPDATA pour les données non itinérantes (données qui ne doivent pas être copiées sur le réseau lorsque l'utilisateur se connecte à une autre machine).

+0

Je suis d'accord. Ce dossier se déplace également avec l'utilisateur sur le réseau si l'itinérance est activée. –

+0

merci pour les conseils. J'ai fini par écrire une fonction qui lit un fichier INI dans un dictionnaire > dictionnaire et appelle cette fonction deux fois, une fois pour CSIDL_COMMON_APPDATA et ensuite avec CSIDL_LOCAL_APPDATA. szAppData ne se termine pas par un \. est-ce WXP spécifique? – mariotomo

+0

Il existe une API win32 pour lire les fichiers ini: GetPrivateProfileString (http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx) Si vous utilisez PathAppend alors vous n'avez pas à se soucier de savoir si elle se termine par un \. Bienvenue à la façon win32: c'est tout ou rien ... – danio

Questions connexes