-
使用C#开发完成的应用程序,更换计算机后运行出现异常:未经处理的异常:System.BadImageFormatException:试图加载格式不正确的程序。(HRESULT: 0x8007000B)。
使用.Net开发、使用了默认配置(Any CPU)的应用程序,在运行时会被.Net JIT编译成与操作系统相同的配置(x86, x64);在64位系统上运行时,被编译成64位;在32位操作系统上运行时,被编译成32位。
出现上面异常的原因:在64位应用程序里面调用了32位的控制卡DLL,或在32位应用程序里面调用了64位的控制卡DLL;
为了避免此类情况发生,建议用户将应用程序明确配置为X86或X64,同时配置对应版本的控制卡DLL,避免使用Any CPU配置。
-
在64位Windows 7系统下,无法成功安装控制卡的驱动程序,安装过程提示“Windows无法验证此驱动程序软件的发布者”。
64位Windows系统下的驱动程序必须使用经过微软交叉授权的数字证书签名后,才可以正常安装。
为了提高操作系统的安全性,微软自从2016 年1 月1日后不再提供基于SHA-1 哈希算法的代码签名数字证书,转而使用SHA-2 哈希算法。
Windows 7操作系统于2010年发布,发布时仅支持SHA-1 哈希算法签名和验证支持,为了支持该安全升级,微软于2015年3月提供一个针对 Windows 7 和 Windows Server 2008 R2更新,以便添加 SHA-2 签名和验证功能支持,因此用户仅需要打开操作系统的自动更新、将计算机连接网络以下载更新即可。
如果安装控制卡的计算机无法上网,用户可在有互联网连接的计算机上从微软网站下载“用于基于 x64 的系统的 Windows 7 安全更新程序 (KB3033929)”,然后复制到目标计算机上安装。下载链接:https://www.microsoft.com/zh-cn/download/details.aspx?id=46148
参考信息:
https://support.microsoft.com/en-us/help/3033929/microsoft-security-advisory-availability-of-sha-2-code-signing-support
-
安装了PCI, PCI Express接口运动控制卡的计算机从睡眠中被唤醒后,应用程序出现异常,控制轴无法运动。
使用FPGA实现的PCI桥或PCI Express桥,不支持PCI电源管理规范里面定义的低功耗状态(PCI Function D1 State, PCI Function D2 State, PCI Function D3 code State),计算机从休眠中被唤醒后,FPGA内部寄存器全部被复位,休眠前的寄存器值丢失。解决办法:安装了PCI, PCI Express接口控制卡的计算机,要在其电源管理设置里面禁止计算机进入睡眠状态。
-
在Windows 11操作系统下安装控制卡驱动程序,设备管理器提示“Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。 (代码 52)”。
从Windows 10 1607版本开始,微软改变了内核驱动程序的签名方式,操作系统不再加载没有使用Dev Portal方式签名的内核驱动程序(即使该驱动程序已经包含经过微软签发的交叉签名证书进行的签名)。
但是存在三个例外情况:
计算机上的操作系统是从Windows 10 1607版本之前的版本升级上来;
计算机BIOS里面的安全启动选项(Secure Boot)被关闭;
驱动程序使用2015年7月29日之前微软签发的交叉签名证书进行签名。
因此可通过关闭计算机BIOS里面的安全启动选项(Secure Boot)的方法解决此问题。