gpt4 book ai didi

c++ - 如何将 LPWSTR*(或 WCHAR*)转换为 LPWSTR

转载 作者:行者123 更新时间:2023-11-28 00:53:35 24 4
gpt4 key购买 nike

我在将值转换为 LPWSTR 时遇到困难。我正在获取一个注册表值,并尝试将结果作为 LPWSTR 返回。看起来使用 RegQueryValueExW 的注册表调用适用于各种类型来存储结果,但我无法将它们中的任何一个转换回 LPWSTR。

LPWSTR value;
HKEY hKey;

long result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"RegEntry1", 0, ACCESS|KEY_WOW64_32KEY, &hKey);
if (result == ERROR_SUCCESS)
{
//WCHAR buffer[512];
//TCHAR buffer[512];
LPWSTR buffer[512];
DWORD bufferSize = sizeof(buffer);
ULONG queryVal = 0;

queryVal = RegQueryValueExW(hKey, L"Path", 0, NULL, (LPBYTE)buffer, &bufferSize);
if (queryVal == ERROR_SUCCESS)
{
//Access violation error here; I need some type of conversion.
value = buffer;
}
}

到目前为止,我在这里阅读的所有帖子都没有让我找到答案。 C++ 不是我的主要开发语言。

更新:所有建议的答案都不适合我。我找到了一种替代方法来完成我需要的事情。

最佳答案

您不需要LPWSTR 的缓冲区,您需要wchar_t 的缓冲区。指向它的指针将是 LPWSTR,因为它是 wchar_t * 的类型定义。

WinNT.h 中的这两行是相关的:

typedef wchar_t WCHAR;    // wc,   16-bit UNICODE character

typedef __nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR;

编辑:我怀疑问题出在您没有向我们展示的代码部分。您是从函数返回 value 吗?如果是这样,那么问题是您要返回一个指向缓冲区的指针,该缓冲区已超出范围并已被销毁。我会返回 std::wstringCString

关于c++ - 如何将 LPWSTR*(或 WCHAR*)转换为 LPWSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12695134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com