【问题标题】:POS for .NET Barcode scanner DeviceEnabled failed to set.NET 条码扫描仪 DeviceEnabled 的 POS 未能设置
【发布时间】:2018-03-01 09:17:37
【问题描述】:

我目前正在开发一个 .NET 4.5.1 应用程序,它应该使用条形码扫描仪来读取二维条形码文本。为此,安装并使用了 Microsoft POS for .NET 1.14.1。条码扫描器(Intermec/Honeywell ED40)驱动安装正确,OPOS驱动是非托管OCX。

我使用典型的工作流程在 WinForms 项目中创建扫描仪实例:

public partial class MainForm : Form
{
  private PosExplorer _explorer;
  private Scanner     _scanner;

  public MainForm()
  {
    InitializeComponent();
  }

  protected override void OnShown(EventArgs e)
  {
    base.OnShown(e);

    _explorer = new PosExplorer(this);
    DeviceInfo  device = myPosExplorer.GetDevice(DeviceType.Scanner, "Intermec_RS-232_Scanner");
    _scanner = (Scanner)explorer.CreateInstance(device);
    _scanner.Open();
    _scanner.Claim(1000);
    _scanner.DataEvent += scanner_DataEvent;
    _scanner.ErrorEvent += scanner_ErrorEvent;
    _scanner.DeviceEnabled = true; // throws here if normal user privileges
    _scanner.DataEventEnabled = true;
    _scanner.DecodeData = true;
  }
}

如果应用程序使用管理权限启动,一切正常。但是,如果使用普通用户权限启动,则无法启用扫描仪。执行scanner.DeviceEnabled = true语句时,抛出如下异常:

PosControlException: Failed to set property DeviceEnabled.

如果我编译并启动提供的 Microsoft 示例“Microsoft POS Tester”,则会出现同样的问题。但也提供的预编译版本“C:\Program Files (x86)\Microsoft Point Of Service\SDK\Samples\Sample Application\TestApp.exe”目录工作,独立于权限。

我没有在不同的论坛和 .NET 的 POS 文档中找到解决方案。我对 ActiveX 的 Internet Explorer 安全设置做了几次实验,同样的问题。我想,这是其他安全设置,有人知道吗?

环境:

  • Windows 7 Pro x64
  • .NET 4.5.1

谢谢。

编辑:

几个小时后,我找到了原因,是注册表虚拟化。制造商的 OPOS 驱动程序 (OCX) 尝试写入 HKLM/Software/Wow6432Node/Intermec 子项。因此,该写访问被虚拟化为 HKEY_USERS/[User SID]_Classes/VirtualStore/Machine/Software/Wow6432Node/Intermec。但是虚拟商店的key不完整,缺少很多值。

解决方案:

  • 删除虚拟商店中的HKEY_USERS/[User SID]_Classes/VirtualStore/Machine/Software/Wow6432Node/Intermec键。
  • 为原始 HKLM/Software/Wow6432Node/Intermec 键的 Windows Users 组分配 完全访问 权限。因此,所有用户都访问相同的注册表项。

【问题讨论】:

  • 请注意,您可以回答自己的问题,您可以从问题中编辑出答案并这样做吗?

标签: c# .net winforms opos pos-for-.net


【解决方案1】:

问题解决了,看我上面的编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多