현재 바코드 스캐너를 사용하여 2D 바코드 텍스트를 읽어야하는 .NET 4.5.1 응용 프로그램을 개발 중입니다. 이를 위해 Microsoft POS for .NET 1.14.1이 설치되어 사용됩니다. 바코드 스캐너 (Intermec/Honeywell ED40) 드라이버가 올바르게 설치되어 있고 OPOS 드라이버는 관리되지 않는 OCX입니다. 응용 프로그램이 관리자 권한을 사용하기 시작하면POS for .NET 바코드 스캐너 DeviceEnabled를 설정하지 못했습니다.
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
문을 실행하면, 다음과 같은 예외가 발생합니다 : 내가 컴파일하고 제공하는 마이크로 소프트 샘플 "마이크로 소프트 POS 테스터를"시작하는 경우
PosControlException: Failed to set property DeviceEnabled.
같은 문제가 발생합니다. 그러나 미리 컴파일 된 버전 인 "C : \ Program Files (x86) \ Microsoft Point of Service \ SDK \ Samples \ Sample Application \ TestApp.exe"도 권한과 별도로 작동합니다.
다른 포럼과 POS for .NET 설명서에서 해결책을 찾지 못했습니다. ActiveX에 대한 Internet Explorer 보안 설정으로 몇 가지 실험을했습니다. 동일한 문제입니다. 나는 elsewere의 보안 설정이고, 누구에게 생각이 있습니까?
환경 :
- 윈도우 7 프로 64
- .NET 4.5.1
감사합니다.
편집 : 많은 시간, 나는 이유를 발견
후에는 레지스트리 가상화이었다. 제조업체의 OPOS 드라이버 (OCX)가 HKLM/Software/Wow6432Node/Intermec 하위 키에 쓰려고 시도합니다. 따라서 해당 쓰기 액세스는 HKEY_USERS/[User SID] _Classes/VirtualStore/Machine/Software/Wow6432Node/Intermec으로 가상화되었습니다. 그러나 가상 저장소의 핵심은 불완전했으며, 많은 가치가 누락되었습니다.
솔루션 :
- 가상 저장소에 HKEY_USERS/[사용자 SID] _Classes/VirtualStore/기계/소프트웨어/Wow6432Node/인터멕 키를 삭제합니다.
- 할당 원래 HKLM/소프트웨어/Wow6432Node/인터멕 키에 대한 Windows 사용자 그룹에 전체 액세스 권한을. 따라서 모든 사용자가 동일한 레지스트리 키에 액세스합니다.
자신 만의 질문에 대답 할 수 있습니다. 질문에서 대답을 편집하고 할 수 있습니까? – TheLethalCoder