2009-05-19 25 views
20

什麼時候應該爲每個用戶狀態使用Windows註冊表,以及我們應該在什麼時候使用文件系統,特別是用戶的AppData文件夾? (例如,C:\ Users \ USERNAME \ AppData)。獨立存儲在哪裏進來?如何決定在哪裏存儲每個用戶的狀態?註冊?應用程序數據?隔離存儲?

是否有一個漂亮堅定的規則,還是隻是一個模糊的東西,就像「使用註冊表,直到它變得太多的數據存儲在註冊表中」。或者「使用你想用的任何東西」。

是否存在影響決策的Windows徽標要求?

如果我使用AppData目錄,我該如何選擇Local,Roaming和LocalLow?

編輯:我只注意到這些類似的問題:

我會總結回覆。

回答

11

如果你有一個小數字鍵/值對和值都不大註冊表是偉大的 - 你不關心Xcopy部署 - 然後使用註冊表(我知道這不是確切的,但通常在與註冊表工作時變得很痛苦)。

如果您希望xcopy部署,數據必須與程序位於同一文件夾中 - 但該程序可以位於AppData文件夾下的某個位置,它不必位於「程序文件」下。

僅當您需要或必須使用它時才使用隔離存儲 - 例如ClickOnce。

否則使用AppData \ Roaming,只有在有充足的理由時才使用Local或LocalLow。

編輯:這裏是漫遊,本地和LocalLow之間的區別:

Windows有所謂的「漫遊配置文件」一個鮮爲人知的功能,一般的想法是,在企業環境中啓用此功能的任何用戶都可以使用任何電腦。

當用戶登錄時,他的私人設置從服務器下載,當他註銷時,他的設置會上傳回服務器(實際過程顯然更復雜)。

Vista中用戶的「漫遊」文件夾中的文件或XP中的「應用程序數據」中的文件隨用戶移動 - 因此任何設置和數據都應存儲在那裏。

Vista中「Local」和「LocalLow」下的文件和XP中的「Local Settings」中沒有文件,所以它是臨時文件的好地方,與特定計算機或可重新計算的數據有關。在Vista中,作爲我們都知道並喜愛的新安全功能的一部分,您可以讓程序以「低完整性模式」運行(例如IE處於保護模式),這些程序的運行權限降低,並且可以「 t訪問用戶配置文件中的文件 - 「LocalLow」文件夾下的文件除外。

因此,總之,存儲在「LocalLow」中的文件本質上是不安全的,「本地」/「本地設置」中的文件很可能在某些大公司中不可用 - 所以除非您有充分的理由,正在做「漫遊」/「應用程序數據」。

+0

您能否詳細說明AppData \ Roaming與本地 - 爲什麼它更好? – 2009-05-19 15:23:41

4

你可能要考慮Isolated Storage

+0

好的,謝謝。良好的信息。獨立存儲在AppData中使用一個子目錄作爲實際位置。它也很好地被隔離。所以我想這歸結於基於尺寸的決定。如果它需要超過幾個註冊表項,那麼使用獨立存儲? – Cheeso 2009-05-19 14:10:10

1

我不知道是否有一個堅定的規則,但有一點需要考慮的是註冊表被交易 - 對於併發讀/寫操作更安全。因此,如果您的用戶數據可能在運行時由多個線程寫入(或者您的產品包中包含多個exe),請考慮使用註冊表。

歷史記錄: MS從.ini文件轉到註冊表的一個原因(正如我聽說的)正是爲了處理併發訪問問題。

.Net(有點)以xml .config文件的形式返回到.ini文件,但是這些配置文件不應該在運行時寫入(或者至少在有機會併發時作家/讀者)。

更多信息:http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx

+0

用戶配置文件被設計爲在運行時修改。 – 2009-05-20 09:39:23

相關問題