2009-07-10 7 views
2

setzen Ich bin auf der Suche nach einem akzeptablen Startpunkt für die Platzierung von Anwendungen auf einem Windows-Rechner. Ich habe mehr als eine Bewerbung. Aus persönlichen Gründen möchte ich die Registrierung nicht verwenden: Ich bevorzuge Klartext-Initialisierungsdateien (.ini). Ich habe auch keine Lust, die Dateien im selben Verzeichnis wie die ausführbaren Dateien zu speichern. Die ideale Situation erlaubt es mir, sie irgendwo zu speichern, wo Benutzer oder Systemadministratoren schreiben dürfen.wo Initialisierungsdateien in Windows

richtig, ich bin kein Windows-Benutzer, meine erste Schätzung wäre $HOME/.my_company_name und /etc/my_company_name, aber gibt es etwas konzeptionell äquivalent zu diesen Orten in Windows?

suchen gerade in die SET Ausgang und erraten:

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

durch die Art und Weise: Ich muss noch prüfen, ob diese noch Variablen aus einem Windows-Dienst existieren ...

Antwort

4

denke ich AppData was Sie wollen.

Sie können SHGetFolderPath (von SHFOLDER.DLL) verwenden, um das programmgesteuert zu erhalten.

Von MSDN 'Data and Settings Management' (siehe Abschnitt 4.2 'Klassifizieren und Speichern von Anwendungsdaten richtig' sehen):

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

Anfügen [company name]\[product name]\[version] zu szAppData mit PathAppend:

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

Es gibt auch CSIDL_COMMON_APPDATA für nicht-benutzerspezifischen Daten und CSIDL_LOCAL_APPDATA für Non-Roaming-Daten (Daten, die nicht über das Netzwerk kopiert werden sollen, wenn sich der Benutzer an einem anderen Computer anmeldet).

+0

Ich stimme zu. Dieser Ordner routet auch mit dem Benutzer über das Netzwerk, wenn Roaming aktiviert ist. –

+0

danke für die Hinweise. Ich schrieb am Ende eine Funktion, die eine INI-Datei in ein map > Wörterbuch liest und diese Funktion zweimal aufruft, einmal für CSIDL_COMMON_APPDATA und dann mit CSIDL_LOCAL_APPDATA. szAppData endet nicht mit \. ist das WXP spezifisch? – mariotomo

+0

Es gibt eine Win32 API, um Ini-Dateien zu lesen: GetPrivateProfileString (http://msdn.microsoft.com/en-us/library/ms724353(VS.85).aspx) Wenn Sie PathAppend verwenden, dann haben Sie nicht sich darum kümmern, ob es in einem \ endet. Willkommen auf dem win32 Weg: es ist alles oder nichts ... – danio

Verwandte Themen