2010-03-26 44 views
3

我們有很多產品在註冊表上保存它們的「狀態」。我應該使用註冊表還是平面文件來保存程序的狀態?

保存程序狀態的最佳做法是什麼?將程序狀態保存爲註冊表項或將程序狀態保存到XML等平面文件有哪些優點/缺點?

謝謝!

+0

它應該是可編輯的嗎? – SteelBytes 2010-03-26 11:49:32

+0

我們不建議客戶編輯註冊表項。在內部(devs/test),我們有時會編輯註冊表項。 – Ian 2010-03-26 11:51:44

+4

我不會將XML文件作爲平面類別... – Adrian 2010-03-26 12:03:42

回答

3

顯而易見的是將這些狀態存儲在普通文件中,使用戶更容易手動備份/恢復狀態。

0

多年來,程序員將他們的應用程序設置存儲在配置文件中。然後,時代改變了,多年來他們使用註冊表 - 其中許多人使用它很糟糕,並且它在Vista和UAC出現時引發了問題。現在,尤其是在.Net世界中,Windows開發人員正在重新將配置文件存儲在配置文件中。我個人認爲這是最好的方法,如果你需要將你的應用移動到另一臺機器上,或者重新安裝操作系統,所有你必須確保你做的就是保存你的配置文件來保留你的設置。

有些東西,您可能仍然想要在註冊表中存儲,例如(加密)許可信息。對於其他一切,配置文件是好的。儘管如此,請注意UAC和文件虛擬化,這樣你就不會陷入麻煩中。

0

個人我會去的平面文件。

(我假設「註冊表」是指Windows註冊表?)

平面文件允許你(甚至用戶)檢查,最終甚至手動修改值。 根據您的情況,這可能是有用的調試,修復錯誤保存的數據等

除非你想擁有的數據是「不透明」,因此「很難找到/操縱」的東西,註冊表報價福利方面很少。也許速度更快,但如果你有很多狀態可以更好地使用嵌入式數據庫而不是平面文件。

2

還要考慮到註冊表中有一些特殊的密鑰,用於系統中的每個用戶。

我認爲註冊表是存儲用戶特定信息的最佳選擇,可以輕鬆丟棄和恢復(例如,用於登錄的最後一個用戶名)。其他數據應該位於可以備份的設置文件中。

0

我曾遵循雷德蒙德學說。我的程序使用.INI文件。然後我忠實地切換到註冊表 - 用戶開始抱怨。所以,我逆轉了這一趨勢並轉回到.INI文件。

有人想編輯它們(好/壞?)。有些人想要備份它們,或者轉移到新機器上。有些人不想失去他們,如果他們重新安裝Windows。

作爲一個用戶,我有多個分區。 Windows/programs/data/swap(以及其他一些)。沒有節目進入c:\program files,他們都進入節目分區。沒有我可以控制的數據進入c:\user data,它全部進入數據分區(使用tweakui power toy,或者regedit來更改默認值(但並不是所有程序都表現良好並且讀取註冊表以查找這些路徑 - 有些只是硬編碼它們))。底線 - 當Windows獲取內褲時,我會重新安裝一次(大約每三個月一次),然後格式化C:驅動器。

通過格式化Windows分區,我得到一個乾淨的安裝。我的數據和程序是安全的,但我可能需要重新安裝一些程序,這就是爲什麼我儘可能使用便攜式版本的原因。

Imo,註冊表是Windows上犯下的最大罪惡 - 單點故障。

我的建議是?本地存儲的配置文件。 INI是否允許用戶編輯,如果不是,則爲序列化或二進制格式。

或者,你可以提供一個選擇......

0

個人而言,我去一個平面文件,無論是INI文件或XML文件沒有什麼區別我。但是在我的工作中,由於與部署相關的問題,我們的客戶更喜歡註冊表。這取決於你的客戶羣是誰,以及保持你的產品工作的人喜歡什麼。

0

我總是用正規的文件,因爲它的發展=)更容易

簡單的IO VS我不記得如何讀/寫註冊表
簡單的文件複製/粘貼VS出口/進口鍵備份/ DEVELOPPEMENT測試

注意,所有的這些優勢也轉化成部署策略和配置的通用客戶端使用配置的多個版本

0

取決於部署是多麼沉重。我的大多數應用程序都是XCopy-Deployable,即它們不需要安裝程序,只需複製/解壓縮即可。因此,我使用.ini文件(使用my own INI File Parser作爲.net沒有內置的)

但是,如果您的應用程序需要集中管理(例如,使用Windows組策略)或者您有「重」安裝程序無論如何,註冊表是首要的選擇。這是因爲通常安裝到C:\ Program Files的應用程序和普通用戶不具有對此目錄的寫入權限。當然,當應用程序是Silverlight應用程序時,還有其他選擇(%APPDATA%或獨立存儲必須使用),但您也可以「隨流」一起使用。

當然,如果你的應用程序應該運行在單聲道上,你可以排除註冊表,並應該去平面文件。

相關問題