Thu
17
Apr 2008
Żeby program był elegancki i działał dobrze (zwłaszcza pod Vista...), powinien swoje pliki konfiguracyjne i inne dane trzymać w katalogu C:\Dokuments and Settings\Login\Application Data\..., a nie w podkatalogu Program Files, gdzie leży plik wykonywalny. Jak pobrać ścieżkę do tego katalogu w C#?
Microsoft przewidział do tego metodę statyczną Application.UserAppDataPath. Niestety ona działa w ten sposób, że zwraca (a jeśli nie istnieje to także tworzy na dysku) ścieżkę typu Application Data\Nazwa firmy\Nazwa programu\Wersja.Wersja.Wersja.Wersja. Taka zamotana ścieżka to nienajlepszy pomysł. Szczególnie, że konfiguracja powinna działać także w nowych wersjach programu.
Dlatego lepszym rozwiązaniem jest chyba taki kod:
private string GetConfigFileName() { string Dir = System.IO.Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData), "Nazwa programu"); if (!System.IO.Directory.Exists(Dir)) System.IO.Directory.CreateDirectory(Dir); return System.IO.Path.Combine(Dir, "Plik.ext"); }