| ||||
| ||||
есть проект, хотел сделать службой, но наткнулся на проблему. Пока ехе запускается как аппликейшн, все ок, код работает, делаю из него службу - не находятся сертификаты. процедура работы с сертификатом в ехе: procedure TForm1.ViewCert(var Msg:TMessage); var Store:OleVariant; Certs : Olevariant; cert : olevariant; begin if Msg.Msg = ISM_VIEWCERT then begin Store := CreateOleObject('CAPICOM.Store'); Store.Open; Certs := Store.Certificates.Find(1,'Sample', true); //а вот тут мы имеем проблему - сертификатов 0 при работе как служба Cert := Certs.Item[1]; Cert.Display; Store := null; Certs := null; Cert := null; Msg.Result := 0; end; end; что я не учел? т.к. просто аппликухой все работает, то попробовал запускать обычный аппликейшн другой службой (висит служба и проверяет, запущен или нет, и, если нет, то запускает), но результат тот же самый - сертификатов не видно! а вот так запускаю другой службой: if WinExec(PAnsiChar(Servname),SW_SHOWNORMAL)>31 then begin WND := FindWindow(WNDClassName, WindowName); if WND <> 0 then begin if SendMessage(WND,ISM_CERTVIEW,0,0) <> 0 then begin // ошибку пишем в лог end; end; end; | ||||
Ответы: | ||||
| ||||
Для каждого пользователя - свое хранилище личных сертификатов. Запустите службу из-под того же пользователя что и обычное приложение и посмотрите. | ||||