none
win7系统 windows服务调用word组件问题. RRS feed

  • 问题

  • 我新建了个windows服务项目,使用FileSystemWatcher组件监视指定文件夹,发现创建了word文档之后调用word的com组件对此文档进行打印

    这个服务在XP跟2003下工作正常,但是换到win7下面就不正常了,服务仍然能够监控到文件的创建,但是执行到调用word组件的地方就跳过了,系统也不触发异常.请问各位大哥怎么处理,我猜想可能跟权限有关,但是不知道具体怎么设置,能想到的都试过了 没效果,依然不能打印.

    2010年12月2日 6:27

答案

  • dear
    1.那应该是要创建与客户相同环境来开发,使用非托管元件就是很麻烦,每个系统跑出来的结果都会不同。
    2.环境许可的话可以用远端Debug


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月6日 8:16

全部回复

  • 高手快快显灵 阿弥陀佛
    2010年12月2日 8:35
  • 您可以从事件日志中查找事件名称为您 Windows 服务程序名称的事件,它会指示到底是什么异常导致程序终止。

    一般说来都会是权限问题。您可以从 Windows 服务控制台 (services.msc) 中找到您的服务,打开属性页,找到用户账户,并更改为 LOCAL SYSTEM,并允许桌面交互后重新启动服务尝试。


    Mark Zhou
    2010年12月2日 10:13
  • 您可以从事件日志中查找事件名称为您 Windows 服务程序名称的事件,它会指示到底是什么异常导致程序终止。

    一般说来都会是权限问题。您可以从 Windows 服务控制台 (services.msc) 中找到您的服务,打开属性页,找到用户账户,并更改为 LOCAL SYSTEM,并允许桌面交互后重新启动服务尝试。


    Mark Zhou


    没有触发异常,程序没有停止.

    你说的方式我都试验过了,无效.到了那段就是不执行!

    2010年12月3日 7:35
  • 建议去 Debug 一下这个 Windows Service,关于如何 Debug Windows Service,请参考相关 MSDN 文档。大概方法就是把 Visual Studio Debugger attach 到需要调试的 Windows Service 进程上,然后配置好 PDB 文件路径。

    可以在调用 Word 的地方加上 EventLog 日志,调用完成后调用 Marshal.GetLastWin32Error() 看看有没有 Win32 异常发生,我认为这里肯定会有 COM 异常之类的东西出来的。


    Mark Zhou
    2010年12月3日 8:43
  • dear,
    每一个系统所发生的状况都会不太一样,尤其WIN7的安全性更高,可能你存取的东西被UAC挡住了,你可试试提高你程式的权限
    C#程式以系統管理員的身份執行 (UAC)
    http://coazure-code.blogspot.com/2010/10/c-uac.html

    如果用了UAC还无法处理建议还是一步一布除错,Windows Service侦错方法如下
    Windows Services Debug Mode
    http://www.dotblogs.com.tw/kzn/archive/2008/11/27/6108.aspx
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月4日 17:05
  • 我的本本装的是XP,我不可能给客户去装个Visual Studio 来调试吧
    2010年12月6日 6:45
  • dear
    1.那应该是要创建与客户相同环境来开发,使用非托管元件就是很麻烦,每个系统跑出来的结果都会不同。
    2.环境许可的话可以用远端Debug


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年12月6日 8:16