Ошибка 208 при Createobject

  • Автор темы Автор темы PavelT100
  • Дата начала Дата начала
P

PavelT100

Написал некий агент который манипулирует некоторым образом с файлами, копирует, запускает и т.п.
Sub Initialize
On Error Goto ErrGlobal

Set WShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

...........
exit sub
ErrGlobal:
Print "GLOBAL ERROR INITIALIZE " & Cstr(Err) & ": " & Error$ & " on Line " & Cstr(Erl)

End Sub

запускаю его, все отличто отработал, все что надо сделал, послал в конце концов письмо с логом о пределанной работе, завершился вполне успешно. Запускаю его повторно, иногда выдается ошибка
"GLOBAL ERROR INITIALIZE 208: Cannot create automation object on Line 4"
т.е. не может создать объект Set WShell = CreateObject("WScript.Shell") ,
если строку эту убрать, хотя WShell мне нужен, ошибка та же самая выдается на строке Set FSO = CreateObject("Scripting.FileSystemObject"). При этом такие ошибки возникают не всегда, а совершенно не понятно из-за каких причин. Что можете посоветовать ?
 
Может объект еще висит в памяти и поэтому не может создать новый?
Т.е. добавить проверку типа:
Код:
Set WShell = GetObject("WScript.Shell")
If WShell is Nothing Then Set WShell = CreateObject("WScript.Shell")
 
Может объект еще висит в памяти и поэтому не может создать новый?
Т.е. добавить проверку типа:
Код:
Set WShell = GetObject("WScript.Shell")
If WShell is Nothing Then Set WShell = CreateObject("WScript.Shell")
Проверка, это хорошо, только если объект "висит в памяти" как принудительно его оттуда "снять" ? Иначе боюсь простой повторный вызов CreateObject ничего кардинально не изменит, хотя, конечно, обязательно попробую.
 
Проверка, это хорошо, только если объект "висит в памяти" как принудительно его оттуда "снять" ? Иначе боюсь простой повторный вызов CreateObject ничего кардинально не изменит, хотя, конечно, обязательно попробую.
Хз. Ты пока просто проверь. Хотя, сомневаюсь, что это поможет. ;)
 
Проверил - не работает.
[codebox]Sub Initialize
On Error Goto ErrGlobal
Print "Begin sinchronize"

Set WShell = Nothing
Set FSO = Nothing

Set WShell = CreateObject("WScript.Shell")
If WShell Is Nothing Then
Print "Error in set WShell"
Set WShell = CreateObject("WScript.Shell")

End If
....
Set FSO = Nothing
Set WShell = Nothing
Exit Sub
ErrGlobal:
Print "GLOBAL ERROR INITIALIZE " & Cstr(Err) & ": " & Error$ & " on Line " & Cstr(Erl)
On Error Goto 0
[/codebox]
и мне сказали что ошибка 208 как и прежде в строке
Set WShell = CreateObject("WScript.Shell"), а проверка на Nothing уже просто не актульна, ошибка вырабатывается до проверки.
 
В первый раз надо делать не CreateObject, а GetObject. ;)
 
перед Set WShell = GetObject(, "WScript.Shell") напишите on error resume next
 
Не сильно надеялся, что сработает. Но попробовать стоило... :)
Могу посоветовать проверить на другом сервере, если возможно. Вдруг проблема не в лотусе.
 
забавно наблюдать - как люди с виндовыми КОМами борятся, а ведь говоришь им - не трогай каку ;)
по теме - надо выяснить - а стоит ли КОМ трогать, или достаточно обойтись др. методами обсчения с ОС
или короче - "который манипулирует некоторым образом с файлами, копирует, запускает и т.п." это зачем делается?
 
тоже GetObject советовали...)))
 
Хочется сказать байан, но не очевидный :)
Службы компонентов смотрели?
dcomcnfg
Там находите нужную компоненту и в ее свойствах безопасности ставите или административный пароль для запуска или текущий пользователь. У меня похожие траблы были при запуске по расписанию агента с доступом к Excel. лечил через dcomcnfg
 
Мы в соцсетях:

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

Курс AD