RegQueryValueExで指定するレジストリのデータタイプの定数を調べようとWindows SDKのヘッダを見ると"RRF_RT_REG_SZ"なんていう見慣れない値があるではありませんか。定数としては0x2。あれ、こんな値だっけ?と思っているとコメントにはこんなことが書いてある。winreg.hより引用
// restrict type to REG_SZ // (other data types will not return ERROR_SUCCESS) // (automatically converts REG_EXPAND_SZ to REG_SZ unless RRF_NOEXPAND is specified) #define RRF_RT_REG_SZ 0x00000002
どうもこの値はWindows Server 2003 SP1/Windows XP x64 Edition以降でサポートされたRegGetValue()用だそうです。ちなみにREG_SZの定義は0x1。なんて紛らわしい。
Windows NT 3.1で本格的にレジストリを使うようになって、なんでRegQueryValueなんてわかりにくい名前なんだろうと思っていたのですが、やっとわかりやすい名前になったってところ?