我在使用地税发票控件进行开票的测试的时候,在xp上测试时正常的,在别人的win7系统测试也是正常,但我在我本机确不正常。我本机装的是msdn版本win7系统,这个系统比较原装。
错误信息如下:
2012-07-21 06:30:08,546 [1] ERROR - ThreadException caught System.DllNotFoundException: 无法加载 DLL“GdltaxIA.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)。 在 SkyMap.Net.ZSTax.Commands.FPOnlineHelper.ZKHelper.SetFpzxServerURL(String AURL)
解决办法是:
由于Windows 7系统都默认开启DEP防护功能,所以算法调用DLL时报出以下错误: “System.DllNotFoundException:无法加载DLL “HSFileED.dll”:内存位置访问无效。(异常来自HRESULT:0x800703E6)。” 解决的方法是关闭DEP防护功能
关闭方法:
打开“计算机-属性-高级系统设置”中的“高级”选项卡,点击“性能”下面的“设置”按钮,切换到“数据执行保护”选项,勾选“为除下列选定程序之外的所有程序和服务启用”,最后点击“添加”按钮找到并添加中文执行程序。(确认中)
非常重要(windows7直接进行这一步就可以了):从“开始”-“所有程序”-“附件”中找到“命令提示符”,右键选择“以管理员身份运行”,输入“bcdedit.exe/set {current} nx AlwaysOff”(不包含引号),回车,出现“操作成功完成”,
然后重启计算机,这样便彻底关闭了DEP,若日后想要重新开启DEP,在命令提示符中输入“bcdedit /set {default} nx Optin”,回车并重启计算机即可。
Tips:不要输入“bcdedit.exe/set {current} nx AlwaysOn”,因为这条命令是对所有程序开启DEP,会造成许多程序无法运行。