20.03.2007 20:49:24работа из под службы Ответов: 1
Lord207
есть проект, хотел сделать службой, но наткнулся на проблему. Пока ехе запускается как аппликейшн, все ок, код работает, делаю из него службу - не находятся сертификаты.
процедура работы с сертификатом в ехе:
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;
 
Ответы:
21.03.2007 10:39:25Kirill Sobolev
Для каждого пользователя - свое хранилище личных сертификатов. Запустите службу из-под того же пользователя что и обычное приложение и посмотрите.