[New - Windows NT]
[New - Windows 95, OEM Service Release 2]
CryptSetProvider功能用于指定当前用户默认的CSP。
调用此函数后,此用户随后发出的任何调用CryptAcquireContext指定【dwProvType】提供程序类型,但不提供程序名称,将导致【pszProvName】提供程序被使用。
注意典型应用程序不会使用此函数。它仅供行政应用程序使用。
BOOL CRYPTFUNC CryptSetProvider(
LPCTSTR 【pszProvName】, | |
DWORD 【dwProvType】 | |
); |
参数
【pszProvName】
[in]新的默认CSP的名称。这个CSP应该已经安装在电脑上了。
【dwProvType】
[in] 【pszProvName】参数指定的CSP的提供者类型。
备注
调用CryptAcquireContext函数时,表现良好的应用程序通常不指定CSP名称。这给予用户一定的自由度,因为他们可以选择具有适当级别的安全性的CSP。
这意味着,对CryptSetProvider的调用通常将决定从该点运行的所有应用程序使用的给定类型的CSP。在这种情况下,CryptSetProvider功能不应在未经用户许可的情况下被调用。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要检索扩展错误信息,请使用GetLastError功能。
下表列出了GetLastError函数最常返回的错误代码。
错误 | 描述 |
ERROR_INVALID_HANDLE | 其中一个参数指定一个无效句柄。 |
ERROR_INVALID_PARAMETER | 其中一个参数包含无效值。这通常是一个非法的指针。 |
ERROR_NOT_ENOUGH_MEMORY | 操作过程中操作系统内存不足。 |
从RegCreateKeyEx函数返回的错误代码。 | 参见RegCreateKeyEx. |
错误代码从RegSetValueEx函数返回。 | 见RegSetValueEx. |
例
HCRYPTPROV hProv = 0;
//指定默认的PROV_RSA_SIG提供程序。请注意,这是假定的
//一个CSP类型为PROV_RSA_SIG并命名为“Joe's Provider”
//已经安装。
if(!CryptSetProvider(TEXT(“Joe's Provider”),PROV_RSA_SIG)){
printf("Error %x during CryptSetProvider!\n", GetLastError());
return;
}
//获取我们刚刚默认的提供者的句柄。
if(!CryptAcquireContext(& hProv,NULL,NULL,PROV_RSA_SIG,0)){
printf("Error %x during CryptAcquireContext!\n", GetLastError());
return;
}
...
//发布提供者句柄。
if(!CryptReleaseContext(hProv,0)){
printf("Error %x during CryptReleaseContext!\n", GetLastError());
return;
}
也可以看看