64 Bit Windows und 32 Bit Delphi Kompilat? Dann schaut dein Programm im falschen Pfad nach, Stichwort WOW64 (es gibt in diesem Zusammenhang für die Registry einen speziellen Terminus, der mir gerade nicht einfällt). Hat dein Programm ein Manifest? Wenn nicht, wird dir das System unter Umständen ein anderes Windows vorgaukeln. Oder führst du deine Software im Kompatibitätsmodus aus?
Davon abgesehen öffnest du mit dem Code den Registry-Schlüssel schreibend, was ohne Adminrechte fehlschlagen wird. Entweder du nutzt
TRegistry.OpenKeyReadOnly oder setzt das Flag KEY_READ beim Erzeugen der Instanz in
TRegistry.Create.
Unabhängig davon gibt es genügend zuverlässige Funktionen zum Ermitteln der Windows-Version, die ohne Zugriff auf die Registry auskommen. Auch wenn man dort immer das Manifest beim Erscheinen neuer Windows-Versionen pflegen muss (aber oft ändert man sowieso alle paar Jahre was an der eigenen Software, so dass das nicht ins Gewicht fällt).
MfG Dalai