2009-05-19 26 views
20

Khi nào Windows Registry nên được sử dụng cho mỗi người dùng, và khi nào chúng ta nên sử dụng hệ thống tập tin, đặc biệt là thư mục AppData của người dùng? (ví dụ: C: \ Users \ USERNAME \ AppData). Nơi nào lưu trữ Isolated đến?Cách quyết định nơi lưu trữ trạng thái cho mỗi người dùng? Đăng ký? Dữ liệu chương trình? Isolated Storage?

Có quy tắc khá chắc chắn hay chỉ là một điều mờ, như "sử dụng đăng ký cho đến khi nó trở thành quá nhiều dữ liệu để lưu trữ trong sổ đăng ký". hoặc "sử dụng bất cứ điều gì bạn cảm thấy thích sử dụng."

Có các yêu cầu về biểu trưng Windows ảnh hưởng đến quyết định không?

Nếu tôi sử dụng thư mục AppData, làm cách nào để chọn giữa Local, Roaming và LocalLow?

chỉnh sửa: Tôi chỉ nhận thấy những câu hỏi tương tự:

Tôi sẽ tóm tắt câu trả lời.

Trả lời

11

Nếu bạn có một số ít các cặp khóa/giá trị và các giá trị không lớn registry là tuyệt vời - và bạn không quan tâm về việc triển khai xcopy - sau đó sử dụng registry (Tôi biết điều này là không chính xác, nhưng nó thường là rõ ràng khi làm việc với registry trở thành một nỗi đau).

Nếu bạn muốn triển khai xcopy, dữ liệu phải nằm trong cùng thư mục với chương trình - nhưng chương trình có thể ở đâu đó trong thư mục AppData, nó không phải nằm trong "tệp chương trình".

Chỉ sử dụng bộ nhớ riêng khi bạn cần hoặc phải sử dụng bộ nhớ - ví dụ: ClickOnce.

Nếu không, hãy sử dụng AppData \ Roaming, sử dụng Local hoặc LocalLow chỉ khi bạn có lý do chính đáng.

EDIT: Đây là sự khác biệt giữa Roaming, địa phương và LocalLow:

Windows có một tính năng ít được biết đến gọi là "roaming profile", ý tưởng chung là trong một môi trường doanh nghiệp với tính năng này được kích hoạt bất kỳ người dùng có thể sử dụng bất kỳ máy tính nào.

Khi người dùng đăng nhập vào cài đặt riêng của mình được tải xuống từ máy chủ và khi đăng xuất, cài đặt của anh ấy được tải lên máy chủ (quá trình thực tế phức tạp hơn, rõ ràng).

Các tệp trong thư mục "Chuyển vùng" của người dùng trong Vista hoặc "Dữ liệu ứng dụng" trong XP di chuyển xung quanh với người dùng - vì vậy mọi cài đặt và dữ liệu sẽ được lưu trữ ở đó.

Các tệp trong "Local" và "LocalLow" trong vista và "Local Settings" trong XP không, vì vậy đây là nơi tốt cho các tệp tạm thời, những thứ được gắn với máy tính hoặc dữ liệu cụ thể có thể được tính toán lại.

Trong Vista, là một phần của các tính năng bảo mật mới mà chúng ta đều biết và yêu thích, bạn có thể chạy chương trình ở chế độ "toàn vẹn thấp" (ví dụ IE ở chế độ được bảo vệ). t truy cập các tệp trong tiểu sử của người dùng - ngoại trừ các tệp trong thư mục "LocalLow". Vì vậy, trong kết luận, các tệp được lưu trữ trong "LocalLow" vốn không an toàn và các tệp trong "Local"/"Local Settings" có khả năng không khả dụng ở một số công ty lớn - vì vậy trừ khi bạn có lý do chính xác và biết chính xác bạn đang thực hiện với "Chuyển vùng"/"Dữ liệu ứng dụng".

+0

Bạn có thể xây dựng trên AppData \ Roaming so với Local - tại sao nó tốt hơn không? –

+1

Sergey, tôi đã thêm thông tin bạn yêu cầu, tôi hy vọng bạn thấy nó hữu ích – Nir

+0

% APPDATA% điểm vào thư mục Chuyển vùng. Có một điểm nào trỏ đến thư mục cục bộ không? (Ngoài% APPDATA% \ .. \ local) – Vaccano

4

Bạn có thể muốn xem xét Isolated Storage.

+0

ok, Cảm ơn. Thông tin tốt. Bộ nhớ riêng biệt sử dụng một thư mục con trong AppData cho vị trí thực tế. Nó cũng được cô lập độc đáo. Vì vậy, tôi đoán nó đi xuống đến một quyết định dựa trên kích thước. Nếu nó đòi hỏi nhiều hơn một vài mục nhập reg, sau đó sử dụng bộ nhớ bị cô lập? – Cheeso

1

Tôi không biết liệu có quy tắc vững chắc hay không, nhưng một điều cần xem xét là đăng ký được giao dịch - nó an toàn hơn cho các hoạt động đọc/ghi đồng thời. Vì vậy, nếu dữ liệu người dùng của bạn có thể được viết bởi nhiều luồng tại thời gian chạy (hoặc nếu bạn có nhiều exe trong gói sản phẩm của mình), hãy xem xét việc sử dụng sổ đăng ký.

Lịch sử: Một lý do (như tôi đã nghe) rằng MS đã chuyển từ tệp .ini sang sổ đăng ký chính xác là cố xử lý vấn đề truy cập đồng thời.

.Net (sắp xếp) đã quay lại tệp .ini dưới dạng tệp xml .config, tuy nhiên các tệp cấu hình này không được ghi vào thời gian chạy (hoặc ít nhất là không nếu có cơ hội đồng thời nhà văn/độc giả).

Thông tin thêm: http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx

+0

tệp cấu hình người dùng được thiết kế để sửa đổi khi chạy. –

5

Đừng làm lộn xộn Registry của tôi cảm ơn bạn.

Sử dụng bộ nhớ bị cô lập, tức là sử dụng.

Xem Was The Windows Registry a Good Idea? Trên Blog của Jeffs ...

Các vấn đề liên quan