CryptUnprotectData returns FALSE, please help me. I try with wstring also, but it returns FALSE too. In which direction to look the error in C++?
#include <wtypes.h>
#include <string>
#include <cstdint>
#include "dpapi.h"
#pragma comment(lib, "Crypt32")
int main()
{
string in = "fdggddgsgds";
LPWSTR pDescrOut = NULL;
DATA_BLOB inData, outData;
inData.pbData = (BYTE*)in.data();
inData.cbData = (DWORD)in.size();
BOOL ok = CryptUnprotectData(&inData, NULL, NULL, NULL, NULL, 0, &outData);
if (inData.pbData != NULL)
LocalFree(inData.pbData);
if (pDescrOut != NULL)
LocalFree(pDescrOut);
if (!ok)
return NULL;
char* str = (char*)malloc(outData.cbData + 1);
memcpy(str, outData.pbData, outData.cbData);
str[outData.cbData] = '\0';
if (outData.pbData != NULL)
LocalFree(outData.pbData);
return 0;
}