2008-09-09 16 views
40

Wiem, że nie powinniśmy używać rejestru do przechowywania danych aplikacji, ale w aktualizacji starszej aplikacji (i chcących zrobić jak najmniej zmian), do jakich gałęzi rejestru można używać nie-administratorów?Jaki dostęp do rejestru można uzyskać bez uprawnień administratora?

Czy mogę uzyskać dostęp do wszystkich HKEY_CURRENT_USER (aplikacja aktualnie uzyskuje dostęp HKEY_LOCAL_MACHINE) bez uprawnień administratora?

+1

"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

Odpowiedz

64

Generalnie użytkownik nieadministratorzy ma ten dostęp do rejestru:

odczytu/zapisu do:

  • HKEY_CURRENT_USER

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.

+2

Dziękuję. Zapisano bezowocne wyszukiwanie w witrynie MSDN, chociaż link byłby miły. Te pytania i odpowiedzi wymagają więcej ekspozycji. –

3

Tak, powinieneś być w stanie napisać w dowolnym miejscu pod HKEY_CURRENT_USER bez uprawnień administratora. Ale to jest faktycznie prywatny sklep, do którego żaden inny użytkownik na tym komputerze nie będzie mógł uzyskać dostępu, więc nie można tam umieścić żadnej współdzielonej konfiguracji.

Powiązane problemy