Я был бы очень признателен за помощь в этом! Это может быть сложно. :)
Проблема
- У меня есть приложение VB6, которое настроено как запланированное задание. Он запускается каждый раз, но при выполнении
CreateObject()
происходит сбой, если пользователь не вошел в систему на компьютере.
- Я ищу информацию о том, что может вызвать это. Мое основное подозрение - сбой в работе некоторых API Windows.
Ключевые моменты
- Поведение подтверждено в Windows 2000, 2003, 2008 и Vista.
- Приложение выполняется от имени пользователя X в назначенное время, выполняемое планировщиком задач Windows.
- Он выполняется каждый раз. Приложение запускается!
- Если пользователь X вошел в систему через RDP, он работает отлично. (Обратите внимание, что пользователь не должен быть подключен, только вошел в систему)
- Если пользователь X не вошел в систему на компьютере, произойдет сбой приложения.
Точка отказа
- Сбой приложения при использовании
CreateObject()
для создания экземпляра объекта DCOM, который также является частью приложения.
- Объекты DCOM объявляют .dll-ссылки при запуске (глобально / поверх .bas-файла) и запускают небольшую функцию запуска. Ошибка должна быть во время запуска, возможно, в одном из .dll-объявлений.
Мысли
После некоторого поиска в Google мое первоначальное подозрение было направлено на MAPI. Из того, что я мог видеть, MAPI требует, чтобы пользователь вошел в систему. Приложение имеет ссылки MAPI. Но даже со всеми удаленными ссылками MAPI он все равно не работает.
Какая разница, если пользователь вошел в систему? Отображение реестра? Среда? Explorer.exe запущен.
Не входит ли пользователь в систему, когда приложение выполняется как пользователь?
Какая информация поможет?
- Окончательный ответ был бы действительно великим.
- Любая информация о любой функции VB6 / Windows API, которая может действовать по-разному, в зависимости от того, вошел ли пользователь в систему или нет, определенно помогла бы.
- Подобные переживания могут привести меня в правильном направлении.
- Советы по отладке.