| ||||
| ||||
Здравствуйте. Я использую 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. Не подскажете, как это исправить? | ||||
Ответы: | ||||
| ||||
Тип вместо PROV_RSA_FULL поставь 75. | ||||
| ||||
Теперь возвращается другая ошибка: 8009001B 2148073499 NTE_PROV_TYPE_NO_MATCH: Provider type does not match registered value. | ||||
| ||||
#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" - так что тип должен быть первый. А при передаче NULL в качестве имени контейнера выбирается дефолтный контейнер (с именем текуущего пользователя), но он может не существовать. Если, конечно, не стоит флаг VERIFYCONTEXT. | ||||