RegGetValue的lpSubKey可以是非直接后代吗?

时间:2012-02-13 08:43:03

标签: winapi registry

Windows API RegGetValue是否需要直接后代才能获得lpSubKey参数?

这会有用吗?

RegGetValue(HKEY_LOCAL_MACHINE,
            L"Software\\Microsoft\\Windows NT\\CurrentVersion", L"ProductName",
            RRF_RT_REG_SZ, NULL, outdata, &outdata_size);

编辑:我有一个前导斜杠\\,Windows不喜欢它!还将UTF-8字符串转换为UTF-16宽字符串(Windows样式)。

1 个答案:

答案 0 :(得分:0)

  

Windows API RegGetValue是否需要直接后代才能获得lpSubKey参数?

不,它没有。
您可以像显示的那样指定路径。您也不需要前导路径分隔符(\\)。

但是您展示的代码可能有效,也可能无效。不是因为它指定了字符串的路径,而是因为您可能混合了Unicode和ANSI字符串。从您的用户名(unixman),我认为您对Windows编程相对较新,因此值得注意的是Windows应用程序完全是Unicode并且已经使用了十多年。因此,您应始终将代码编译为Unicode并使用L前缀字符串文字(以指示宽字符串或Unicode字符串)。

同样,请确保将outdata声明为wchar_t的数组。