| ||||
| ||||
Добтый день. Такая сложность возникла. Когда устанавливаю личный сертификат через крипторо, то выбрать контейнер с ключами позволяет, а если делаю через код: if (!CryptGetProvParam (m_hCryptProv, PP_ENUMCONTAINERS, NULL, &szKeyContainerLen, CRYPT_FIRST)) { CertFreeCertificateContext(pCert); CryptReleaseContext(m_hCryptProv,0); THROW_ERR(_T("Ошибка при получении размера имени контейнера секретного ключа"), GetLastError()); } if (szKeyContainerLen <= 0){ CertFreeCertificateContext(pCert); CryptReleaseContext(m_hCryptProv,0); THROW_ERR(_T("Не удалось получить имя контейнера секретного ключа"), GetLastError()); } szKeyContainer = (LPTSTR)ALLOC(szKeyContainerLen); if (!CryptGetProvParam (m_hCryptProv, 110, (LPBYTE)szKeyContainer, &szKeyContainerLen, 0)) { CertFreeCertificateContext(pCert); FREE(szKeyContainer); CryptReleaseContext(m_hCryptProv,0); THROW_ERR(_T("Ошибка при получении имени контейнера секретного ключа"), GetLastError()); } то выдает окошко выбора считывателей и при выделении диска с контейнерами пишет "Keyset does not exist" но если это все проделываю через интерфейс криптыПРО, то все видит. P.S. Код рабочий, на другой машине тестил и все было в поряде | ||||
Ответы: | ||||
| ||||
Очень бы хотелось получить ответ. | ||||
| ||||
Очень бы хотелось получить ответ. | ||||
| ||||
Если не будете отвечать, то напишите тут об этом пожалуйста, чтоб я не висел на форуме в ожидании ответа | ||||
| ||||
Собственно, а зачем этот код? Может поможет PP_SELECT_CONTAINER? | ||||
| ||||
PP_SELECT_CONTAINER у Вас определен как 110, так что разницы не какой вообще... | ||||
| ||||
Экспортируйте и удалите ветку HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\SID\KeyDevices\passwords, | ||||
| ||||
я включил просмотрщика дебажных сообщений, и вот, что выбрасывала криптопро при поиске контейнера, думаю это должно помочь [4036] cpcspi:!0xff4:!:1650!read_keyset_by_rdr!search_container fail 300a!0x0(0)! [4036] cpcspi:!0xfc8:!:1079!read_keyset!rdr_wnd_choice_carrier fail!0x8010006e(-2146434962)! [4036] cpcspi:!0xfc8:!:650!key_carrier_open1of! carrier_open fail!0x8010006e(-2146434962)! [4036] cpcspi:!0xfc8:!:572!OpenContainer!OpenContainer key_carrier_open fail (0x8010006e)!0x8010006e(-2146434962)! еще хотелось уточнить, что у меня виртуал флоппи стоит, но думаю - это не принципиально, ибо у меня на компе все работает с такими же условиями... | ||||
| ||||
удар в бубен веткой реестра не помог :-( | ||||
| ||||
Попробуйте поудалять считыватели. | ||||
| ||||
все это проделывал несколько раз и удалял и устанавливал... А можно услышать решение более направленное, а не в стиле " перезагрузите компьютер", "потрите мышку"? По-моему по дебажным сообщениям видно в чем проблема. Очень вас прошу. | ||||
| ||||
Обосную свою настойчивость тем, что я делаю инсталляцию, которую будут делать бабушки во всех субъектах РФ и им сложно включать криптоПРО и устанавливать сертификат там. А если я им буду говорить, чтоб они ветку в реестре чистили, или считыватели перезалили - можете представить, какая будет реакция... | ||||
| ||||
еще обнаружилась зависимость: Если на компе стоит вижуал студия, то код работает, ежели ее на компе нет, то Ваше окно с ключами не выбрасывается :-( | ||||
| ||||
еще обнаружилась зависимость: Если на компе стоит вижуал студия, то код работает, ежели ее на компе нет, то Ваше окно с ключами не выбрасывается :-( | ||||
| ||||
неужели за всю неделю мне так никто и не даст вразумительного ответа? | ||||