Odpowiedzi:
Zależy to od (Default)
wartości, które usuwasz, jak w przypadku każdej wartości rejestru / klucza / gałęzi.
Oprócz wszystkich nazwanych wartości, które można utworzyć pod kluczem rejestru za pomocą funkcji RegSetValueEx, istnieje również tak zwana wartość domyślna, którą można uzyskać, przekazując NULL lub wskaźnik do łańcucha zerowego jako lpValue. Ta wartość domyślna jest również wartością ustawianą i pobieraną podczas wywoływania RegSetValue i RegQueryValue. O co chodzi z tą wartością domyślną?
Oryginalny 16-bitowy rejestr nie miał nazwanych wartości. Miał tylko klucze, a do każdego klucza przypisany był pojedynczy fragment danych: ciąg znaków. Funkcje, które działały na tych danych, to RegSetValue i RegQueryValue, co wyjaśnia, dlaczego te funkcje (1) nie mają parametru lpValue i (2) ustawiają i pobierają tylko ciąg danych. Ponieważ w 16-bitowym świecie to wszystko, co miałeś.
W wyniku konwersji do Win32 rejestr uzyskał nowe możliwości, takie jak przechowywanie danych w formatach wykraczających poza proste ciągi i przechowywanie wielu kawałków danych pod jednym kluczem, używając nazwy, aby je odróżnić. To, co kiedyś nazywano po prostu „wartością klucza rejestru” (ponieważ ponieważ był tylko jeden, nie trzeba było nadawać mu nazwy), teraz pod nazwą specjalną ma domyślną wartość: jest to wartość, której nazwa jest zerowa.
Nie ma nic szczególnego w wartości domyślnej oprócz jej niezwykłej nazwy. Nazwana wartość nie musi istnieć, a jeśli istnieje, typem danych może być cokolwiek. Podobnie wartość domyślna nie musi istnieć, a jej typ może być dowolny. W tym momencie jest to tylko wartość o dziwnej nazwie.
- Blogi MSDN - Stara nowa rzecz - Dlaczego klucze rejestru mają wartość domyślną?
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
?