15.01.2004 10:40:45CryptoAPI в виндовых сервисах Ответов: 6
Александр
Написали прогу в виде виндового сервиса, а она не хочет видеть сертификат в указываемом хранилище, хотя до этого, когда это было просто приложение все работало. Может есть тонкости при использовании CryptoAPI для сервисов?
 
Ответы:
15.01.2004 11:30:59Седов Роман
Вопрос стоит в том, из-под какой учетной записи работает приложение. В случае серсиса это, скорее всего, - "SYSTEM".
Попробуйте настроить сервис на работу из-под той учетной записи, сертификаты хранилищ которой нужно "видеть".
15.01.2004 11:31:39Седов Роман
.
15.01.2004 13:24:14Александр
А если сертификаты у нас хранятся в CERT_SYSTEM_STORE_LOCAL_MACHINE, а ключи в реестре?
15.01.2004 13:45:28Седов Роман
С какими параметрами вы вызываете функцию CertOpenStore?
15.01.2004 20:00:39Александр
hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,0,hProv,CERT_SYSTEM_STORE_LOCAL_MACHINE,L"MY");
20.01.2004 13:17:34Роман
1. Проверить, действительно ли сертификат установлен в физическое хранилище My - Local_Machine, а не куда-нибудь еще. В оснастке MMC "Сертификаты" в меню вид выбрать показ "физических" хранилищ, и проверить, что хранилище "Сертификаты (локальный компьютер)"/Личные/Реестр/Сертификаты содержит требуемый сертификат. Если используются e-token-ы, то могут быть и другие хранилища.

2. Если проверка покажет, что все нормально, сертификат есть, попробовать запустить сервис под вашей учетной записью. Если начнет работать, т.е. сертификат будет найден, - все дело в правах доступа к хранилищу. System не имеет право читать сертфикаты. Если работать не будет и так, нужно смотреть код, который ищет сертфиикаты в хранилище, скорее всего там что-то не так.