應用程式設定存放歷經 INI、登錄表,皆有缺失:INI 結構受限、易衝突;登錄表需管理員權限、易被破壞。.NET 提供標準組態系統,支援 XML 組態檔、隔離儲存區、應用程式域隔離,無需特權即可運作。
<appSettings> 區段:自訂鍵值對,啟動時載入至 NameValueCollection;web.config,就近優先覆寫(machine.config → 應用程式 web.config → 子目錄 web.config);<exe名稱>.exe.config。組態檔無寫入 API,且不宜存放使用者可變設定。正確做法:
[Serializable] public struct GlobalSettings { ... }XmlSerializer 序列化為 XML 檔案(易讀、易偵錯、非物件圖);Environment.GetFolderPath 取得):| 資料夾 | 適用範圍 | 典型用途 |
|---|---|---|
| CommonApplicationData | 所有使用者、機器級 | 資料庫連線字串 |
| ApplicationData | 目前使用者、漫遊 | 使用者工作內容 |
| LocalApplicationData | 目前使用者、本機 | 視窗位置、解析度相關 |
Application.LocalAppDataPath // CommonApplicationData\Company\Product\Version
Application.UserAppDataPath // ApplicationData\Company\Product\Version
Application.LocalUserAppDataPath // LocalApplicationData\Company\Product\Version
自動包含公司、產品、版本資訊,避免衝突,支援多版本並存。
切勿寫入 Program Files、Windows 系統目錄——需要高權限,一般使用者無法存取。
唯讀設定用 appSettings,讀寫設定用 XML 序列化存入正確的隔離資料夾。這樣既符合安全原則,又給使用者私密感,無需妥協。