Windows服务无法打开COM端口。

3
我们有一个使用第三方DLL与COM打印机通信的Windows服务(用C#编写)。
已在4台本地机器上测试了Windows服务,在每种情况下打印机都能正常工作。
我们已经将这个Windows服务部署到多个客户的生产环境中,并且也能正常工作,但是现在我们要将其部署到一个新客户端,并且无论我们进行多少次测试,该DLL都无法打开COM端口(已检查是否被其他应用程序使用,但没有发现)。
但最奇怪的是,如果我们从命令行启动服务.exe,则它可以正常工作,因此我们尝试以连接到机器的用户身份启动服务(而不是本地系统),但仍然无法工作。
这是什么原因?有没有任何方法,无论是通过Windows配置还是通过某些软件,阻止Windows服务与COM端口通信?或者还有其他解释吗?

你是如何确定没有其他应用程序正在使用串口的?(即,客户说可能是正确的,因为没有可用的串口)。 - Richard
像这样检查COM端口的使用方式:MyPort = new SerialPort("COM1"); 尝试 { MyPort.Open(); } catch (Exception ex) { Console.WriteLine("打开端口时出错:{0}", ex.Message); } - Gonçalo Cardoso
抱歉,我误读了问题。(看起来您无法为串行端口分配ACL,因此这不是我的第二个想法)。在工作和不工作的情况下,您得到了什么诊断:是否有任何API调用失败? - Richard
当API的OpenPrinter方法出现问题时,它会返回一个假值。 - Gonçalo Cardoso
操作系统是相同的(Win7 x64),但我认为这里的主要问题是:“如果我们从命令行启动服务.exe,则它可以正常工作”。 - Gonçalo Cardoso
显示剩余5条评论
1个回答

0

对于所有来到这里寻找解决方案的人,我很抱歉,但我的解决方案是更改第三方DLL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接