INI 檔結構受限、登錄表寫入需管理員權限且風險高。.NET 提供標準組態位置:應用程式專屬、受限使用者權限下也能運作。
app.config/web.config),<appSettings> 區段供自訂鍵值對。web.config 繼承(Machine.config → 應用程式 → 子虛擬目錄),就近者優先。AppName.exe.config)。組態檔無寫入 API,不宜存儲使用者可變設定。建議定義可序列化結構,以 XmlSerializer 存檔:
[Serializable]
public struct GlobalSettings { /* 公用屬性 */ }
XmlSerializer ser = new XmlSerializer(typeof(GlobalSettings));
TextWriter wr = new StreamWriter("data.xml");
ser.Serialize(wr, myGlobalSettings);
wr.Close();
XML 格式易讀、易剖析、易除錯,可選擇性加密。
| Environment.SpecialFolder | 用途 | 預設路徑範例 |
|---|---|---|
| CommonApplicationData | 全機器所有使用者共用(如資料庫連線字串) | C:\Documents and Settings\All Users\Application Data |
| ApplicationData | 目前使用者,網路漫遊(如個人化設定) | C:\Documents and Settings\<User>\Application Data |
| LocalApplicationData | 目前使用者、本機專屬(如視窗位置、解析度相關) | C:\Documents and Settings\<User>\Local Settings\Application Data |
使用 Environment.GetFolderPath() 取得路徑,再附加公司/產品/版本子目錄。Application 類別提供 LocalAppDataPath、UserDataPath、LocalUserDataPath 便利屬性。
這些目錄需高權限,一般使用者無法寫入。正確放置設定檔能兼顧安全性與使用者隱私感。