Winapi Can RegGetValue';LPS子项是否为非直接后代?

Winapi Can RegGetValue';LPS子项是否为非直接后代?,winapi,registry,Winapi,Registry,Windows API的RegGetValue参数是否需要直接后代 这样行吗 RegGetValue(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion", L"ProductName", RRF_RT_REG_SZ, NULL, outdata, &outdata_size); 编辑:我有一个前导斜杠\\,Windows不喜欢它!还将UTF-8字符串

Windows API的
RegGetValue
参数是否需要直接后代

这样行吗

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样式)

Windows API的
RegGetValue
参数是否需要直接后代

不,它没有。
您可以指定一个路径,如图所示。您也不需要前导路径分隔符(
\\

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


同样,请确保将
outdata
声明为
wchar\u t

Unix应用程序的数组,它们只使用UTF-8,这与美式英语的ASCII非常相似;)我将问题改为使用UTF-16宽字符串:)。