我非常感谢对此有所帮助!这可能是一个棘手的问题。 :)
问题
CreateObject()
时,如果用户未登录到计算机,则会失败。关键点
失败点
CreateObject()
实例化同时也是应用程序一部分的DCOM对象时,应用程序失败。思想
经过一些谷歌搜索后,我最初的怀疑是针对MAPI的。从我可以看到MAPI要求用户登录。该应用程序具有MAPI引用。但即使删除了所有MAPI引用,它仍然无效。
用户登录后有什么区别?注册表映射?环境? Explorer.exe正在运行。
当用户以用户身份执行时,用户是否未登录?
哪些信息有帮助?
答案 0 :(得分:1)
VB应用程序可能需要继续运行仅在用户登录时运行的服务。
答案 1 :(得分:1)
DCOM组件的“身份”设置是什么。
C:\窗口\ system32 \的COM \ comexp.msc
将其设置为“此用户”并设置具有所需权限的用户,然后将该应用程序作为您自己运行,以查看DCOM组件是否仍然有效,然后再从调度程序重试。
答案 2 :(得分:0)
我们从未发现是什么导致了这一点。
相反,我创建了一个RDP客户端,我将其放入计划任务中。它在启动时登录了具有所需应用程序的用户。一段时间后,RDP客户端强制注销用户(以防止失控的应用程序挂起系统)。
不是完美的解决方案,但仍然是一种解决方案。
答案 3 :(得分:0)
有您的VB6表格吗? 因为当你运行预定时,它会“作为服务”运行,因此它不能有表格,或者它是否有形成环境以显示它们。
我不记得我使用过什么,但是存在通用的“作为服务运行”转换器exe来运行窗口化的VB6项目。
也许您可以轻松地将代码转换为VBScript运行,并安排它。