Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kiedy należy używać rejestru
Rejestr Windows jest odpowiedni do przechowywania małych ilości danych konfiguracji (ustawień, preferencji, stanu poszczególnych użytkowników). Rozważ alternatywy dla innych scenariuszy:
| Scenario | Zalecenie |
|---|---|
| Ustawienia aplikacji (nowoczesne aplikacje) | Preferuj plik ApplicationData.LocalSettings (UWP/WinUI) lub plik JSON/XML w %APPDATA% programie dla aplikacji klasycznych. Są one łatwiejsze do tworzenia kopii zapasowych, migrowania i debugowania. |
| Duże dane lub dane ustrukturyzowane | Użyj pliku (JSON, SQLite itp.), a nie przechowywania dużych obiektów blob w wartościach rejestru. |
| Konfiguracja usługi dla całej maszyny | Rejestr w ramach HKEY_LOCAL_MACHINE programu jest odpowiedni — jest to standardowy mechanizm Windows usług. |
| Preferencje poszczególnych użytkowników (aplikacje klasyczne) | Rejestr w ramach HKEY_CURRENT_USER\Software\<Company>\<App> programu jest odpowiedni i konwencjonalny. |
| Stan współużytkowany między procesami | Rozważmy nazwę pamięci udostępnionej, nazwanych potoków lub pliku — rejestr nie ma powiadomienia o zmianie wbudowanej w odczyty wartości. Użyj tylko regNotifyChangeKeyValue w przypadku powiadomienia gruboziarnistego. |
Ważna
Najlepsze rozwiązania w zakresie zabezpieczeń: Otwieranie kluczy rejestru z minimalnymi wymaganymi prawami dostępu (np KEY_READ . lub KEY_WRITE) — unikaj używania lub KEY_ALL_ACCESSMAXIMUM_ALLOWED. Zapisz tylko HKEY_LOCAL_MACHINE z procesów z podwyższonym poziomem uprawnień (administrator). Zawsze sprawdzaj wartości zwracane z funkcji rejestru — zwracają one wartość ERROR_SUCCESS powodzenia i kod błędu Win32 w przypadku błędu (nie HRESULT).
Note
Typowe pułapki — typy ciągów: Wartości ciągów rejestru (REG_SZ, REG_EXPAND_SZ) muszą zawierać terminator o wartości null w liczbie bajtów przekazanych do RegSetValueEx. Podczas odczytywania ciągów za pomocą RegQueryValueEx parametru lub RegGetValuewartość null zawsze kończy bufor samodzielnie, jeśli przechowywana wartość może nie zawierać terminatora — niektóre ciągi zapisują ciągi innych firm bez niego.
Poniżej przedstawiono funkcje rejestru.
| Funkcja | Opis |
|---|---|
| GetSystemRegistryQuota | Pobiera bieżący rozmiar rejestru i maksymalny rozmiar, który rejestr może osiągnąć w systemie. |
| RegCloseKey | Zamyka dojście do określonego klucza rejestru. |
| RegConnectRegistry | Ustanawia połączenie ze wstępnie zdefiniowanym dojściem rejestru na innym komputerze. |
| RegCopyTree | Kopiuje określony klucz rejestru wraz z jego wartościami i podkluczami do określonego klucza docelowego. |
| RegCreateKeyEx | Tworzy określony klucz rejestru. |
| RegCreateKeyTransacted | Tworzy określony klucz rejestru i kojarzy go z transakcją. |
| RegDeleteKey | Usuwa podklucz i jego wartości. |
| RegDeleteKeyEx | Usuwa podklucz i jego wartości z określonego widoku rejestru specyficznego dla platformy. |
| RegDeleteKeyTransacted | Usuwa podklucz i jego wartości z określonego widoku rejestru specyficznego dla platformy jako transakcji operacji. |
| RegDeleteKeyValue | Usuwa określoną wartość z określonego klucza rejestru i podklucza. |
| RegDeleteTree | Usuwa podklucze i wartości określonego klucza rekursywnie. |
| RegDeleteValue | Usuwa nazwaną wartość z określonego klucza rejestru. |
| RegDisablePredefinedCache | Wyłącza buforowanie dla wstępnie zdefiniowanego uchwytu rejestru dla HKEY_CURRENT_USER dla bieżącego procesu. |
| RegDisablePredefinedCacheEx | Wyłącza obsługę buforowania dla wszystkich wstępnie zdefiniowanych dojść rejestru dla bieżącego procesu. |
| RegDisableReflectionKey | Wyłącza odbicie rejestru dla określonego klucza. |
| RegEnableReflectionKey | Włącza odbicie rejestru dla określonego klucza wyłączonego. |
| RegEnumKeyEx | Wylicza podklucze określonego otwartego klucza rejestru. |
| RegEnumValue | Wylicza wartości określonego otwartego klucza rejestru. |
| RegFlushKey | Zapisuje wszystkie atrybuty określonego otwartego klucza rejestru w rejestrze. |
| RegGetKeySecurity | Pobiera kopię deskryptora zabezpieczeń chroniącego określony otwarty klucz rejestru. |
| RegGetValue | Pobiera typ i dane dla określonej wartości rejestru. |
| RegLoadKey | Tworzy podklucz w obszarze HKEY_USERS lub HKEY_LOCAL_MACHINE i przechowuje informacje o rejestracji z określonego pliku w tym podkluczu. |
| RegLoadMUIString | Ładuje określony ciąg z określonego klucza i podklucza. |
| RegNotifyChangeKeyValue | Powiadamia obiekt wywołujący o zmianach atrybutów lub zawartości określonego klucza rejestru. |
| RegOpenCurrentUser | Pobiera uchwyt do klucza HKEY_CURRENT_USER użytkownika, podszywa się pod bieżący wątek. |
| RegOpenKeyEx | Otwiera określony klucz rejestru. |
| RegOpenKeyTransacted | Otwiera określony klucz rejestru i kojarzy go z transakcją. |
| RegOpenUserClassesRoot | Pobiera uchwyt do klucza HKEY_CLASSES_ROOT dla określonego użytkownika. |
| RegOverridePredefKey | Mapuje wstępnie zdefiniowany klucz rejestru na określony klucz rejestru. |
| RegQueryInfoKey | Pobiera informacje o określonym kluczu rejestru. |
| RegQueryMultipleValues | Pobiera typ i dane dla listy nazw wartości skojarzonych z otwartym kluczem rejestru. |
| RegQueryReflectionKey | Określa, czy odbicie zostało wyłączone, czy włączone dla określonego klucza. |
| RegQueryValueEx | Pobiera typ i dane dla określonej nazwy wartości skojarzonej z otwartym kluczem rejestru. |
| RegRenameKey | Zmienia nazwę określonego klucza rejestru. |
| RegReplaceKey | Zamienia plik kopii zapasowej klucza rejestru i wszystkie jego podklucze na inny plik. |
| RegRestoreKey | Odczytuje informacje rejestru w określonym pliku i kopiuje je za pośrednictwem określonego klucza. |
| RegSaveKey | Zapisuje określony klucz i wszystkie jego podklucze i wartości w nowym pliku. |
| RegSaveKeyEx | Zapisuje określony klucz i wszystkie jego podklucze i wartości w nowym pliku. Można określić format zapisanego klucza lub gałęzi. |
| RegSetKeyValue | Ustawia dane dla określonej wartości w określonym kluczu rejestru i podkluczu. |
| RegSetKeySecurity | Ustawia zabezpieczenia otwartego klucza rejestru. |
| RegSetValueEx | Ustawia dane i typ określonej wartości w kluczu rejestru. |
| RegUnLoadKey | Zwalnia określony klucz rejestru i jego podklucze z rejestru. |
Następujące funkcje powłoki mogą być używane z rejestrem:
- AssocCreate
- AssocQueryKey
- AssocQueryString
- AssocQueryStringByKey
- SHCopyKey
- SHDeleteEmptyKey
- SHDeleteKey
- SHDeleteValue
- SHEnumKeyEx
- SHEnumValue
- SHGetValue
- shQueryInfoKey
- SHQueryValueEx
- SHRegCloseUSKey
- shRegCreateUSKey
- SHRegDeleteEmptyUSKey
- shRegDeleteUSValue
- shRegDuplicateHKey
- SHRegEnumUSKey
- SHRegEnumUSValue
- SHRegGetBoolUSValue
- SHRegGetIntW
- shRegGetPath
- SHRegGetUSValue
- SHRegOpenUSKey
- SHRegQueryInfoUSKey
- shRegQueryUSValue
- SHRegSetPath
- shRegSetUSValue
- shRegWriteUSValue
- SHSetValue
Poniżej przedstawiono funkcje inicjowania pliku. Pobierają informacje z pliku inicjowania zdefiniowanego przez system lub aplikację i kopiują je. Te funkcje są udostępniane tylko pod kątem zgodności z 16-bitowymi wersjami systemu Windows. Nowe aplikacje powinny używać rejestru.
| Funkcja | Opis |
|---|---|
| GetPrivateProfileInt | Pobiera liczbę całkowitą skojarzoną z kluczem w określonej sekcji pliku inicjowania. |
| getPrivateProfileSection | Pobiera wszystkie klucze i wartości dla określonej sekcji pliku inicjowania. |
| GetPrivateProfileSectionNames | Pobiera nazwy wszystkich sekcji w pliku inicjowania. |
| GetPrivateProfileString | Pobiera ciąg z określonej sekcji w pliku inicjowania. |
| GetPrivateProfileStruct | Pobiera dane skojarzone z kluczem w określonej sekcji pliku inicjowania. |
| GetProfileInt | Pobiera liczbę całkowitą z klucza w określonej sekcji pliku Win.ini. |
| GetProfileSection | Pobiera wszystkie klucze i wartości dla określonej sekcji pliku Win.ini. |
| GetProfileString | Pobiera ciąg skojarzony z kluczem w określonej sekcji pliku Win.ini. |
| WritePrivateProfileSection | Zamienia klucze i wartości dla określonej sekcji w pliku inicjowania. |
| WritePrivateProfileString | Kopiuje ciąg do określonej sekcji pliku inicjowania. |
| WritePrivateProfileStruct | Kopiuje dane do klucza w określonej sekcji pliku inicjowania. |
| WriteProfileSection | Zastępuje zawartość określonej sekcji w pliku Win.ini określonymi kluczami i wartościami. |
| WriteProfileString | Kopiuje ciąg do określonej sekcji pliku Win.ini. |
Przestarzałe funkcje
Te funkcje są udostępniane tylko pod kątem zgodności z 16-bitowymi wersjami systemu Windows: