• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Could Not Locate Attached File

  • Автор темы wk01
  • Дата начала
W

wk01

Доброго всем дня!
Надеюсь, подобной темы ещё не было. По крайней мере поиск по формулировке ошибки ничего *цензура*ожего не выдал. Суть такова: необходима автоматическая настройка рабочего места пользователя - копирование в папку лотусового клиента нескольких нужных dll. Как из File Resources файлы по-простому выдирать - не нашёл, по-непростому - знаю, что можно, но с dxl'ом разбираться времени нет. Сделал профильную форму с RichText полем, сделал ProfileDoc, приаттачил в это поле 10 dll'ок. Всё вроде бы хорошо, документ открывается/сохраняется, файлы в поле показываются и мышой из документа перетаскиваются. При попытке скриптом выгрузить эти аттачи в папку клиента на первом же файле ошибка:
Could not locate attached file name.dll (4260).
код такой:
Код:
	Dim rti As NotesRichTextItem
Set rti = pdoc.GetFirstItem("ScanEZdlls")
Dim rtnav As NotesRichTextNavigator
Dim att As NotesEmbeddedObject
Set rtnav = rti.CreateNavigator
If rtnav.FindFirstElement(RTELEM_TYPE_FILEATTACHMENT) Then
Do
Set att = rtnav.GetElement()
If Dir$(lotuspath & "\" & att.source)="" Then Call att.ExtractFile (lotuspath & "\" & att.source)
Print att.Source
Loop While rtnav.FindNextElement()
End If
* pdoc - полученный заранее профайловый документ, lotuspath - путь к папке клиента
клиент, дизайнер - 7.0.2
Если не делать ExtractFile, то все аттачи код перебирает нормально (названия файлов по крайней мере принтятся ок).
Если приаттачить только 1 файл в поле, то он экстрактится без проблем.
Если зайти с другой стороны и попытаться шуршать по ричтексту не навигатором, а rti.EmbeddedObjects, то свойство сие возвращает Empty.
Никто с этим не сталкивался? ЧТо я делаю не так, или как подругому реализовать копирование библиотек клиентам?
 
M

morpheus

wk01
не может быть, если атачменты есть то они в документе полюбому будут

попробуйте может так
Код:
if ndDoc.HasEmbedded Then	
Forall a In ndDoc.Items
If a.Type = 1 Then ' RICHTEXT (1) means rich text.
Forall o In a.EmbeddedObjects
If Len (v1) > 0 Then v1 = v1 + "<!>"
v1 = v1 + o.Name
End Forall	 
Elseif a.Type = 1084 Then ' ATTACHMENT (1084) means file aztachment.
If Len (v1) > 0 Then v1 = v1 + "<!>"
v1 = v1 + Implode( a.Values,"<!>" )
End If
End Forall
End If

а патом так

Код:
Set object = RTItem.GetEmbeddedObject( sObjName )
If object Is Nothing Then
Set object = ndDoc.GetAttachment ( sObjName )
If object Is Nothing Then 	Exit Function
End If
 
W

wk01

не может быть, если атачменты есть то они в документе полюбому будут
это же LOTUS! тут всё может быть!
в общем проблема решена. расскажу, где сцобака зарыта, может кому будет полезно.
загвоздка оказалась в том, что поле-ричтекстовое было не в простом документе, а в профильном документе базы. а профильный документ, как оказалось, кэшируется клиентом как-то где-то. Сначала обратил внимание на такую штуку: приаттачив 10 dll'ок в ричтекст, сохранив и переоткрыв документ (дофига раз переоткрывал), в ричтексте видел те же 10 dll'oк, а в свойствах документа (ну, по alt+enter'у) $FILE - был всего 1! зато открыв базу с другого компа, обнаружил 10 штук $FILE (как и должно быть), и выгрузка их прошла на ok без каких-либо изменений в коде.
Ещё вчера читал в хелпе, что кэш профайла сбрасывается при переоткрытии базы. Но вот то ли, забывал закрывать дизайнер, то ли, переоткрыв всё как положено, тут же лез опять в профайл-док, что-то менял в ричтексте и провоцировал новый аналогичный косяк. вот так.
сегодня мы многое поняли... (цэ) СП
а именно:
если в профильном документе есть аттачи, то после их внесения или изменения нужно обязательно переоткрывать базу (не забывая и про дизайнер).

P.S. ну и конечно же, всем спасибо за отзывчивость!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!