22.05.2005 15:24:45ошибка при получении контекста провайдера Ответов: 3
Илья
Здравствуйте.

Я использую CryptoPro и пытаюсь получить контекст провайдера по умолчанию следующий функцией:

// Attempt to acquire a handle to the default key container.
bResult = CryptAcquireContext(
&hProv, // Variable to hold returned handle.
NULL, // Use default key container.
MS_DEF_PROV, // Use default CSP.
PROV_RSA_FULL, // Type of provider to acquire.
0); // No special action.

Под англиской версией Windows 2000 она работает, ав под русской функция возвращает false, GetLastError() = 0.
Не подскажете, как это исправить?
 
Ответы:
22.05.2005 16:30:03Кирилл
Тип вместо PROV_RSA_FULL поставь 75.
23.05.2005 10:06:16Илья
Теперь возвращается другая ошибка:
8009001B 2148073499 NTE_PROV_TYPE_NO_MATCH: Provider type does not match registered value.
23.05.2005 11:13:35maxdm
#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
- так что тип должен быть первый. А при
передаче NULL в качестве имени контейнера выбирается дефолтный контейнер (с именем текуущего пользователя), но он может не существовать. Если, конечно, не стоит флаг VERIFYCONTEXT.