C# OPOS PosExplorer.GetDevice()在Windows服务中执行时返回null

C# OPOS PosExplorer.GetDevice()在Windows服务中执行时返回null,c#,.net,epson,opos,pos-for-.net,C#,.net,Epson,Opos,Pos For .net,下面的代码片段使用OPOS.NET打开POS打印机进行打印。当作为独立应用程序的一部分执行时,它可以正常工作。当由Windows服务执行时,对GetDevice的调用。。。始终返回null explorer = new PosExplorer(); device_info = explorer.GetDevice(DeviceType.PosPrinter, PrinterName); printer = (PosPrinter)explorer.CreateInstance(device_in

下面的代码片段使用OPOS.NET打开POS打印机进行打印。当作为独立应用程序的一部分执行时,它可以正常工作。当由Windows服务执行时,对GetDevice的调用。。。始终返回null

explorer = new PosExplorer();
device_info = explorer.GetDevice(DeviceType.PosPrinter, PrinterName);
printer = (PosPrinter)explorer.CreateInstance(device_info);
printer.Open();
printer.Claim(1000);
printer.DeviceEnabled = true;

打印机恰好是爱普生TM-U220B。在服务访问POS设备之前,是否存在需要克服的安全问题?有谁能推荐一个关于使用OPOS.NET开发Windows服务的好信息来源吗?

啊,OPOS,已经有一段时间了

听起来像是保安。测试方法是否为: 1.在您知道可以从独立应用程序使用的用户帐户下运行服务
2.检查服务配置中允许其与桌面交互的设置。

啊,OPOS,已经有一段时间了

听起来像是保安。测试方法是否为: 1.在您知道可以从独立应用程序使用的用户帐户下运行服务
2.检查服务配置中允许其与桌面交互的设置。

您的代码看起来不错。我看到变量名PrinterName。此变量应包含分配给打印机的逻辑名称。逻辑名称分配是一个单独的步骤,可能会被忽略。您可以使用POS for.Net SDK中提供的POSDM确认逻辑名称是否正确存在。命令路径是

C:\Program Files\Microsoft服务点\POSDM列表名


如果设备和分配的逻辑名称没有出现,则可以解释您当前的情况。

您的代码看起来不错。我看到变量名PrinterName。此变量应包含分配给打印机的逻辑名称。逻辑名称分配是一个单独的步骤,可能会被忽略。您可以使用POS for.Net SDK中提供的POSDM确认逻辑名称是否正确存在。命令路径是

C:\Program Files\Microsoft服务点\POSDM列表名


如果设备和分配的逻辑名称没有出现,则可以解释您当前的情况。

您是否解决了此问题?我遇到了一个问题,在ASP.NET中为一个特定设备运行Open时失败,而不管IIS的用户是谁,但对所有其他OPOS设备都可以正常工作。@Peter Beacom我也遇到了类似的问题。但当我在Windows7机器上使用VisualStudio2005时,这个问题并没有发生。它在WindowsXP的所有IDE上都能正常工作。这个问题已经解决了。正如Doobi所说,问题不在代码中,而是在工作站的安全设置中。您解决了这个问题吗?我遇到了一个问题,在ASP.NET中为一个特定设备运行Open时失败,而不管IIS的用户是谁,但对所有其他OPOS设备都可以正常工作。@Peter Beacom我也遇到了类似的问题。但当我在Windows7机器上使用VisualStudio2005时,这个问题并没有发生。它在WindowsXP的所有IDE上都能正常工作。这个问题已经解决了。正如Doobi所建议的,问题不在代码中,而是在工作站的安全设置中。我们可以在服务配置中的哪个位置检查允许它与桌面交互的设置?我们可以在服务配置中的哪个位置检查允许它与桌面交互的设置?