Generalnie użytkownik nieadministratorzy ma ten dostęp do rejestru:
odczytu/zapisu do:
Tylko do odczytu:
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
(który jest tylko Link do HKEY_LOCAL_MACHINE\Software\Classes
)
Jest możliwe, aby zmienić niektóre z tych uprawnień na zasadzie klucz-by-key, ale to bardzo rzadko. Nie powinieneś się o to martwić.
Dla twoich celów, twoja aplikacja powinna zapisywać ustawienia i konfigurację na HKEY_CURRENT_USER
. Miejsce kanoniczne znajduje się w dowolnym miejscu w zakresie: HKEY_CURRENT_USER\Software\YourCompany\YourProduct\
Możesz potencjalnie zachować ustawienia globalne (dla wszystkich użytkowników) w HKEY_LOCAL_MACHINE
. Bardzo rzadko trzeba to robić i powinieneś tego unikać. Problem polega na tym, że każdy użytkownik może je "odczytać", ale tylko administrator (lub jego rozszerzenie, program instalacyjny/instalacyjny) może je "ustawić".
Inne typowe źródło problemów: Twoja aplikacja nie powinna pisać do niczego w katalogach Program files
lub Windows
. Jeśli chcesz pisać do plików, dostępnych jest kilka opcji; opisanie ich wszystkich będzie dłuższą dyskusją. Wszystkie opcje kończą się pisaniem do podfolderu lub innego pod numerem %USERPROFILE%
dla danego użytkownika.
Wreszcie, Twój wniosek powinien pozostać poza numerem HKEY_CURRENT_CONFIG
. Ta gałąź zawiera konfigurację sprzętową, konfiguracje usług i inne elementy, na które nie musi patrzeć 99,9999% aplikacji (na przykład zawiera bieżącą listę urządzeń typu plug-and-play). Jeśli potrzebujesz czegoś, większość informacji jest dostępna za pośrednictwem obsługiwanych interfejsów API w innym miejscu.
"Wiem, że nie powinniśmy już używać rejestru do przechowywania danych aplikacji" - nie sądzę, aby było to całkowicie prawdziwe. Rejestru ma wiele zalet w stosunku do systemu plików i nie jestem świadomy żadnych wskazówek od firmy Microsoft, aby przestać używać go w rozwoju aplikacji. Prawdopodobnie nie powinieneś go używać do przechowywania dużych ilości danych aplikacji, ale jest to dobre miejsce do przechowywania ustawień i danych konfiguracyjnych. – syplex