Привет. Вопрос по CryptoAPI. Есть программа, в которой вызывается CryptAcquireContext(&hProv, NULL,MS_DEF_PROV,PROV_RSA_FULL,0). Эта функция возвращает NTE_BAD_KEYSET(0X80090016). Стал разбираться почему. Мсдн говорит что эта ошибка может возвращаться если не создан key container, либо доступ и нему закрыт. И действительно эта функция нигде не вызывается с параметром CRYPT_NEWKEYSET чтобы создать новый key container, и как следствие не расшифровывается программа для корректной регистрации. Или я не доглядел? Скажу сразу что вся это защита патчится двумя байтами и превращается из версии за 5600 в версию за 14000 сама прога http://www.download.ru/soft/Network_Monitoring/Network__Internet/VCWatcher/32549 Все проверки в файле server.exe, который запакован mew'ом, но он легко распаковывается. Если запустите client.exe то убить его будет немного проблематично И еще одно: авторы пишут что эта программа совместима со всеми версиями винды, так то оно так, но с ослом версии менее 6.0 работать их защита тоже не может, ибо у них стоит MS_DEF_PROV!
twgt ie и криптоапи как-то мало связаны. 0 в параметре pszСontainerName означает использование default контейнера.
infern0 возможно. то же самое можно сказать про любой не мелкомягкий провайдер и софт, его использующий.
не знаю где ты смотрел, рекомендую начинать с msdn. MS_DEF_PROV это "Microsoft Base Cryptographic Provider v1.0" так что будет работать на любой винде. по поводу ошибки: NTE_BAD_KEYSET( 0x80090016L ) The key container could not be opened. A common cause of this error is that the key container does not exist. To create a key container, call CryptAcquireContext using the CRYPT_NEWKEYSET flag. This error code can also indicate that access to an existing key container is denied. Access rights to the container can be granted by the key set creator by using CryptSetProvParam. т.е. у тебя нет ключевого контейнера, нужно его сначала создать (call CryptAcquireContext using the CRYPT_NEWKEYSET flag)
Млин, я не тот параметр написал, конечно же там MS_ENHANCED_PROV. A по поводу ключевого контейнера... 1. Не у меня, а у них 2. Я и написал в #1 что ключевой контейнер нигде не создается, и к тому же hProv!=0 на момент вызова функции .