2017-09-20 12 views
1

현재 바코드 스캐너를 사용하여 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 사용자 그룹에 전체 액세스 권한을. 따라서 모든 사용자가 동일한 레지스트리 키에 액세스합니다.
+2

자신 만의 질문에 대답 할 수 있습니다. 질문에서 대답을 편집하고 할 수 있습니까? – TheLethalCoder

답변

0

위의 편집을 참조하십시오.