![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте.
У меня есть 2 программы. Одна занимется поисков сертификатов (поиск файла по маске), другая устанавливает сертификат в зависимости от его вида в нужное хранилище (для установкм сертификата используется CertMgr.exe). Необходимо их объеденить так, чтобы выполнялся поиск сертификатов и в зависимости в какой папке он находится устонавливать его в определенное хранилище.С этим и возникают проблемы. Пример: Если сертификат лежит в папке UDC, то он устонавливается в хранилище "Доверенные корневые центры сертификации". Листинг поиска: [CODE=pas] Procedure FindRecursive(Const path: String; Const mask: String); Var fullpath: String; Function Recurse( Var path: String; Const mask: String ): Boolean; Var SRec: TSearchRec; retval: Integer; oldlen: Integer; Begin Recurse := True; oldlen := Length(path); retval := FindFirst(path+mask, faAnyFile, SRec); While retval = 0 Do Begin Application.ProcessMessages; If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then Form1.ListBox1.items.Add(path+srec. name); retval := FindNext(SRec); End; FindClose(SRec); If not Result Then Exit; retval := FindFirst( path+'*.*', faDirectory, SRec); While retval = 0 Do Begin If (SRec.Attr and faDirectory) <> 0 Then If (SRec.Name <> '.') and (SRec.Name <> '..') Then Begin path := path + SRec.Name + '\'; If not Recurse( path, mask ) Then Begin Result := False; Break; End; Delete( path, oldlen+1, 255 ); End; retval := FindNext( SRec ); End; FindClose( SRec ); End; // Recurse //___________________________________ ___________________________________ ____ Begin If path = '' Then GetDir(0, fullpath) Else fullpath := path; If fullpath[Length(fullpath)] <> '\' Then fullpath := fullpath + '\'; If mask = '' Then Recurse(fullpath, '*.*') Else Recurse(fullpath, mask); End; procedure TForm1.Button1Click(Sender: TObject); begin FindRecursive('C:\certs','*.cer'); FindRecursive('C:\certs','*.crl'); FindRecursive('C:\certs','*.p7b'); end; [/code] Листинг установки сертификатов: [CODE=pas] ShellExecute(0, 'open', 'soft/CertMgr.exe', Pchar('/add /c certs\ifns\3525.cer /s addressbook'), nil, SW_HIDE); ShellExecute(0, 'open', 'soft/CertMgr.exe', Pchar('/add /c certs\udc\cacer.p7b /s ca'), nil, SW_HIDE); ShellExecute(0, 'open', 'soft/CertMgr.exe', Pchar('/add /crl certs\crl\certcrl.crl /s ca'), nil, SW_HIDE); ShellExecute(0, 'open', 'soft/CertMgr.exe', Pchar('/add /c certs\udc\cacer.cer /s root'), nil, SW_HIDE); [/code] Последний раз редактировалось dzirt87, 19.05.2009 в 17:38. |
#2
|
||||
|
||||
![]() И че? В чем вопрос-то?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Так не выходит объеденить их.Нужно,чтобы как только находится сертификат,то сразу устанавливается в нужное хранилище.
|