C# 客户端上的CoreScanner错误

C# 客户端上的CoreScanner错误,c#,barcode-scanner,C#,Barcode Scanner,我有一个C#应用程序,它使用CoreScanner.dll和SNAPI API。在我的开发计算机上一切正常,但一旦我在客户端PC上安装了应用程序,就会出现一些错误 由于以下错误,检索具有CLSID{}的组件的COM类工厂失败:80080005;或者由于以下错误,从IClassFactory创建具有CLSID{}的COM组件实例失败:80010108 如果我没有得到这两个错误中的任何一个,我可以在调用scanner方法之一时,将对象引用未设置为对象的实例 try {

我有一个C#应用程序,它使用CoreScanner.dll和SNAPI API。在我的开发计算机上一切正常,但一旦我在客户端PC上安装了应用程序,就会出现一些错误

由于以下错误,检索具有CLSID{}的组件的COM类工厂失败:80080005;或者由于以下错误,从IClassFactory创建具有CLSID{}的COM组件实例失败:80010108

如果我没有得到这两个错误中的任何一个,我可以在调用scanner方法之一时,将对象引用未设置为对象的实例

try
        {
            try
            {
                cCoreScanner = (CCoreScannerClass)Activator.CreateInstance(typeof(CCoreScannerClass));

            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - Scanner Created");
                }
            }

            short[] scannertTypes = new short[1];
            scannertTypes[0] = 1;
            short numberOfScannerTypes = 1;
            int[] connectedScannerList = new int[255];

            try
            {
                cCoreScanner.Open(0, scannertTypes, numberOfScannerTypes, out status);

            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - Scanner Open " + status.ToString());
                }
            }


            try
            {
                cCoreScanner.GetScanners(out numberOfScannerTypes, connectedScannerList, out outXML, out status);
            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - Get Scanners " + status.ToString());
                }
            }

            try
            {
                xmlDoc = new XmlDocument();
            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - XML Create");
                }
            }

            try
            {
                xmlDoc.LoadXml(outXML);
            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - XML Load");
                }
            }


            try
            {
                scannerID = xmlDoc.DocumentElement.GetElementsByTagName("scannerID").Item(0).InnerText;
            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - Get ScannerID");
                }
            }







            try
            {
            cCoreScanner.BarcodeEvent += new _ICoreScannerEvents_BarcodeEventEventHandler(onBarcodeScan);


            inXML = "<inArgs>" +
                    "<scannerID>" + scannerID + "</scannerID>" +
                    "</inArgs>";


            cCoreScanner.ExecCommand(2014, inXML, out outXML, out status);

            opCode = 1001;
            inXML = "<inArgs>" +
                            "<cmdArgs>" +
                            "<arg-int>1</arg-int>" + // Number of events you want to subscribe
                            "<arg-int>1</arg-int>" + // Comma separated event IDs
                            "</cmdArgs>" +
                            "</inArgs>";

            cCoreScanner.ExecCommand(opCode, ref inXML, out outXML, out status);

            }
            catch (Exception e)
            {
                using (LogManager lm = new LogManager())
                {
                    lm.WriteErrorTextLog(e, "Setup Scanner - Splash Screen - Enable Scanner, Subscribe to barcode event");
                }
            }

        }
        catch (Exception ex)
        {
            using (LogManager lm = new LogManager())
            {
                lm.WriteErrorTextLog(ex, "Setup Scanner - Splash Screen");
            }
        }
试试看
{
尝试
{
cCoreScanner=(CCoreScannerClass)Activator.CreateInstance(typeof(CCoreScannerClass));
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(即“设置扫描仪-启动屏幕-已创建扫描仪”);
}
}
short[]扫描类型=新的short[1];
扫描类型[0]=1;
短扫描类型数=1;
int[]connectedScannerList=新int[255];
尝试
{
cRescanner.Open(0,扫描类型,扫描类型数,输出状态);
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(例如,“设置扫描仪-启动屏幕-扫描仪打开”+status.ToString());
}
}
尝试
{
cCoreScanner.GetScanners(out numberOfScannerTypes、connectedScannerList、out outXML、out status);
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(例如,“设置扫描仪-启动屏幕-获取扫描仪”+status.ToString());
}
}
尝试
{
xmlDoc=新的XmlDocument();
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(e,“设置扫描程序-启动屏幕-XML创建”);
}
}
尝试
{
LoadXml(outXML);
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(e,“设置扫描程序-启动屏幕-XML加载”);
}
}
尝试
{
scannerID=xmlDoc.DocumentElement.GetElementsByTagName(“scannerID”)。项(0)。InnerText;
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(即“设置扫描仪-启动屏幕-获取扫描仪ID”);
}
}
尝试
{
cCoreScanner.BarcodeEvent+=新的_ICoreScannerEvents_BarCodeEventHandler(onBarcodeScan);
inXML=“”+
“”+scannerID+“”+
"";
cCoreScanner.ExecCommand(2014,inXML,out-outXML,out-status);
操作码=1001;
inXML=“”+
"" +
“1”+//要订阅的事件数
“1”+//以逗号分隔的事件ID
"" +
"";
ExecCommand(操作码,ref-inXML,out-outXML,out-status);
}
捕获(例外e)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(e,“设置扫描仪-启动屏幕-启用扫描仪,订阅条形码事件”);
}
}
}
捕获(例外情况除外)
{
使用(LogManager lm=new LogManager())
{
lm.WriteErrorTextLog(例如,“设置扫描仪-启动屏幕”);
}
}
我不确定我会错在哪里。我注册了DLL,客户机上安装了SNAPI驱动程序,并且使用123Scan实用程序为SNAPI输入设置了扫描仪。客户端是Win7 64位,但我也在WinXP上进行了测试,得到了相同的结果。在Win7 32位上开发,唯一的区别是我的电脑作为SDK在上面,而其他人没有

更新:我终于在摩托罗拉网站上找到了CoreScanner驱动程序,但是80010108错误仍然会发生,但是如果重新启动应用程序,一切都会正常加载。无法100%确定它为什么仍然失败,但至少在应用程序关闭之前它可以工作


更新2:似乎只有在重新安装应用程序后才会失败。之后,它将正常关闭/打开,没有错误。仍然不知道为什么它第一次不起作用,但至少在那之后起作用。

您是否在一个与您的开发人员计算机上的帐户具有相同权限的帐户下运行?如果复制SDK,会发生什么?它们都有管理权限。我还没有试过切换SDK。我希望我不必这么做。我很快就会试一试。