我在將值轉換爲LPWSTR時遇到困難。我得到一個註冊表值,並試圖將結果作爲LPWSTR返回。看來使用RegQueryValueExW進行的註冊表調用適用於存儲結果的各種類型,但我無法將它們中的任何一個轉換回LPWSTR。如何將LPWSTR *(或WCHAR *)轉換爲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++不是我的主要開發語言。
更新:沒有建議的答案爲我工作。我找到了一種替代方式來做我所需要的。
你的緩衝區5 12個字符串(甚至沒有任何分配的內存;你只是覆蓋指針值)。 – chris
在你的問題中,你說你不能投(這將在編譯時)......但在你的評論中,你說你得到一個訪問衝突(這將在運行時)。這是什麼? – dajames
我可以編譯,如果我使用WCHAR,但那是當我得到訪問衝突。我無法與其他兩個編譯(除非我註釋掉「value = buffer」行)。 – Random