//MSDN上看了CryptProtectData写如下的代码
DATA_BLOB DataIn;
DATA_BLOB DataOut;
DataIn.pbData = lpData;
DataIn.cbData = cbData;
BOOL bRst = FALSE;
if(CryptProtectData(&DataIn,L"psw",NULL,NULL,NULL,0,&DataOut))
{
if(RegSetValueEx(m_hKey,lpValueName,0,REG_BINARY,DataOut.pbData,DataOut.cbData) == ERROR_SUCCESS)
{
bRst = TRUE;
}
else
{
MessageBox(NULL,L"写注册表失败!",L"提示信息",MB_ICONINFORMATION);
}
LocalFree(DataOut.pbData);
}
else
{
DWORD dwError = GetLastError();
MessageBox(NULL,L"保护数据操作失败!",L"提示信息",MB_ICONINFORMATION);
}
运行以后不好用调用失败,返回错误87。在网上找了很长时间都是这种调用方法,没有其他的方法。
87表示参数错误,分析:
只有最后一个参数没有初始化为零,其他的都不可能出现错误,实在没有办法的情况下试试写下如下的代码
DataOut.cbData = 0;
DataOut.pbData = NULL;
添加上运行。。。一切OK
无语....