It's a Unicode string if you use the Unicode Windows API: like RegQueryValueExW, for instance, as in your sample code.
But the FCL (i.e. fcl-registry) still only uses the Ansi Windows APIs for the Windows registry, even with FPC 3.0.
*** Edit ***
And there is also currently no widestring version for the FCL registry.
I guess the following list is still a 'valid' exhaustive list of the current progress for the unicode support in the RTL/FCL:
http://wiki.freepascal.org/FPC_Unicode_support#RTL_changes*** Edit2 ***
(Rereading my former answer, I feel it's a bit imprecise and could be wrongly interpreted)
In the Unicode versions of Windows, strings are always stored internally in a wide format ("UTF-16") in the Windows registry (keys or values). These wide strings are converted internally by Windows to/from Ansi strings when Ansi Windows APIs are used.
Which is always the case currently for the FCL...