VS2015中的CryptDestroyKey访问冲突异常 我正在一个C++项目中工作,用VS2010升级一些组件,用VS2015构建,注意到一个奇怪的行为,我无法在网上找到任何讨论。简化代码如下: #include "stdafx.h" int mai

VS2015中的CryptDestroyKey访问冲突异常 我正在一个C++项目中工作,用VS2010升级一些组件,用VS2015构建,注意到一个奇怪的行为,我无法在网上找到任何讨论。简化代码如下: #include "stdafx.h" int mai,c++,visual-studio-2010,visual-studio-2015,cryptography,wincrypt,C++,Visual Studio 2010,Visual Studio 2015,Cryptography,Wincrypt,VS2015中的CryptDestroyKey访问冲突异常 我正在一个C++项目中工作,用VS2010升级一些组件,用VS2015构建,注意到一个奇怪的行为,我无法在网上找到任何讨论。简化代码如下: #include "stdafx.h" int main() { HCRYPTPROV hCryptProv = NULL; LPCTSTR UserName = L"MyKeyContainer"; HCRYPTKEY hKey = NULL; boo

VS2015中的CryptDestroyKey访问冲突异常 我正在一个C++项目中工作,用VS2010升级一些组件,用VS2015构建,注意到一个奇怪的行为,我无法在网上找到任何讨论。简化代码如下:

#include "stdafx.h"

int main()
{
    HCRYPTPROV hCryptProv = NULL;    
    LPCTSTR UserName = L"MyKeyContainer"; 
    HCRYPTKEY hKey = NULL;

    bool result = CryptAcquireContext(&hCryptProv, UserName, NULL, PROV_RSA_FULL, 0);

    result = CryptGenKey(hCryptProv, CALG_RC4, 25 << 16, &hKey); // this line is meant to produce an invalid hKey.
    result = CryptDestroyKey(hKey);

    result = CryptReleaseContext(hCryptProv, 0);
    return 0;
}
#包括“stdafx.h”
int main()
{
HCRYPTPROV HCRYPTPROV=NULL;
LPCTSTR UserName=L“MyKeyContainer”;
HCRYPTKEY hKey=NULL;
bool result=CryptAcquireContext(&hCryptProv,UserName,NULL,PROV\u RSA\u FULL,0);

结果=CryptGenKey(hCryptProv,CALG_RC4,25你不应该用
NULL
句柄调用
CryptGenKey
。句点。你写
result=…
,我们使用
result
,如果
false
就采取适当的措施。我想你是指CryptDestroyKey。我确实理解应该如何处理这个问题,而且它已经实现了d但为什么不像在旧版本中那样处理它呢?这是一个在运行时会发生的突破性变化,Microsoft没有记录它?是的,我的意思是
cryptdowerkey
。Microsoft记录了可以将空指针传递给这些函数吗?您可能只是遇到了未定义的行为。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <Wincrypt.h>