2009-05-19 16 views
20

Kiedy rejestr systemu Windows powinien być używany dla stanu użytkownika i kiedy powinniśmy używać systemu plików, w szczególności folderu AppData użytkownika? (np. C: \ Users \ USERNAME \ AppData). Gdzie wchodzi izolowana przestrzeń dyskowa?Jak zdecydować, gdzie przechowywać dane o poszczególnych użytkownikach? Rejestr? Dane aplikacji? Pojedyncze miejsce do przechowywania?

Czy istnieje dość sztywna reguła, czy jest to po prostu rozmyta rzecz, np. "Korzystaj z rejestru, dopóki nie stanie się zbyt dużo danych do zapisania w rejestrze". lub "używaj tego, co chcesz używać".

Czy są wymagania dotyczące logo systemu Windows, które mają wpływ na decyzję?

Jeśli używam katalogu AppData, w jaki sposób wybrać między lokalnymi, mobilnymi i lokalnymi?

Edit: Właśnie zauważyłem te podobne pytania:

Podsumuję odpowiedzi.

Odpowiedz

11

Jeśli masz małą liczbę par klucz/wartość i wartości nie są duże rejestr jest wielki - i nie dbam o xcopy rozmieszczenia - następnie użyć rejestru (Wiem, że nie jest to dokładne, ale zwykle jest to oczywiste, gdy praca z rejestrem staje się bolesna).

Jeśli chcesz wdrożyć xcopy, dane muszą być oczywiście w tym samym folderze co program - ale program może znajdować się gdzieś w folderze AppData, nie musi być pod "plikami programów".

Używaj odizolowanego magazynu tylko wtedy, gdy go potrzebujesz lub musisz go użyć - na przykład ClickOnce.

W przeciwnym razie użyj AppData \ Roaming, używaj LocalLoveLow tylko jeśli masz uzasadniony powód.

EDIT: Tutaj jest różnica między roamingu, lokalnymi i LocalLow:

Windows ma mało znaną funkcję o nazwie „profilów mobilnych”, ogólna idea jest taka, że ​​w środowisku korporacyjnym z tej funkcji włączony każdy użytkownik może korzystać dowolny komputer.

Gdy użytkownik loguje się w swoich prywatnych ustawieniach, jest pobierany z serwera, a po wylogowaniu jego ustawienia są przesyłane z powrotem na serwer (rzeczywista procedura jest oczywiście bardziej skomplikowana).

Pliki w folderze "Roaming" użytkownika w systemie Vista lub "Dane aplikacji" w systemie XP poruszają się wraz z użytkownikiem - aby wszelkie ustawienia i dane były tam przechowywane.

Pliki w "Lokalnych" i "LocalLow" w widoku i "Ustawienia lokalne" w XP nie, więc jest to dobre miejsce na pliki tymczasowe, rzeczy, które są powiązane z określonego komputera lub danych, które mogą być ponownie obliczone.

W systemie Vista, jako część nowych funkcji bezpieczeństwa, które wszyscy znamy i lubimy, można mieć programy działające w "trybie niskiej integralności" (na przykład IE w trybie chronionym), programy te działają z ograniczonymi uprawnieniami i mogą " t dostępu do plików w profilu użytkownika - z wyjątkiem plików w folderze "LocalLow".

Podsumowując, pliki przechowywane w "LocalLow" są z natury niebezpieczne, a pliki w "Local"/"Local Settings" są prawdopodobnie niedostępne w niektórych dużych firmach - więc jeśli nie masz dobrego powodu i dokładnie wiesz, co robisz robią z "Roaming"/"Dane aplikacji".

+0

Czy możesz opracować na AppData \ Roaming vs. Local - dlaczego jest lepszy? –

+1

Sergey, dodałem informacje, o które prosiłeś, mam nadzieję, że uznasz je za użyteczne. – Nir

+0

% APPDATA% wskazuje na folder Roaming. Czy istnieje taki, który wskazuje na folder lokalny? (Inne niż% APPDATA% \ .. \ local) – Vaccano

4

Być może zechcesz wziąć pod uwagę Isolated Storage.

+0

ok, dzięki. Dobra informacja. Izolowane Pamięć masowa używa podfolderu w AppData dla rzeczywistej lokalizacji. Jest również ładnie odizolowane. Sądzę, że sprowadza się to do decyzji opartej na wielkości. Jeśli wymagałoby to więcej niż kilku wpisów reg, to użyj izolowanego magazynu? – Cheeso

1

Nie wiem, czy istnieje pewna reguła, ale należy wziąć pod uwagę, że rejestr jest przedmiotem transakcji - bezpieczniej jest dla współbieżnych operacji odczytu/zapisu. Tak więc, jeśli dane użytkownika mogą być zapisywane przez wiele wątków w czasie wykonywania (lub jeśli masz wiele exe w pakiecie produktu), rozważ użycie rejestru.

Historia: Historia: Jednym z powodów (jak słyszałem), że MS przeszedł z plików .ini do rejestru, było właśnie spróbować obsłużyć problem z równoczesnym dostępem.

.Net (rodzaj) wrócił do plików .ini w postaci plików xml .config, jednak te pliki konfiguracyjne nie powinny być zapisywane w czasie wykonywania (lub przynajmniej nie, jeśli istnieje szansa na współbieżność pisarze/czytelnicy).

Więcej informacji: http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx

+0

Plik konfiguracyjny użytkownika jest przeznaczony do modyfikowania w czasie wykonywania. –

Powiązane problemy