ATL编写服务调用Office COM组件失败的问题

小鸟向前飞 2017-07-26 04:49:23
使用VC ATL编写了一个服务,可以调用Office COM组件,对文档进行处理。服务在启动时会通过COM接口启动若干office进程。
注册服务后,在服务列表中手动启动服务是没有问题的。
但将服务设定为自启动后,重启机器,登录Windows后发现服务并没有启动。
查看Windows日志没有什么错误信息。
经过测试发现在服务在创建word进程时,调用CreateInstance没有返回(但word是创建了)。
我用的是win server 2016, office2013。
对office word的DCOM进行设置,尝试了很多配置都没有成功。
想请教下该如何配置这样的服务,或者怎么配置office的DCOM。

为什么手动启动就可以,但开机自启动就有问题,是不是哪里的权限设置不对了?
...全文
397 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小鸟向前飞 2017-08-30
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
权限问题或32/64位程序没严格区分,我猜。 以管理员身份运行 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
学习了。
赵4老师 2017-08-11
  • 打赏
  • 举报
回复
权限问题或32/64位程序没严格区分,我猜。 以管理员身份运行 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
小鸟向前飞 2017-08-11
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
搜“Session0穿透”
应该不是session的问题,用process explorer看 启动的office进程都属于session 0
赵4老师 2017-07-27
  • 打赏
  • 举报
回复
搜“Session0穿透”

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧