Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C .dll只能在Windows XP和Vista上正常工作,但不能在7上正常工作?_C_Windows_Dll_Backwards Compatibility - Fatal编程技术网

C .dll只能在Windows XP和Vista上正常工作,但不能在7上正常工作?

C .dll只能在Windows XP和Vista上正常工作,但不能在7上正常工作?,c,windows,dll,backwards-compatibility,C,Windows,Dll,Backwards Compatibility,我有一个windows.dll文件(来自第三方-已经停止支持它,我没有C源代码来纠正问题) 我正在我的一个项目中使用.dll .dll文件在Windows XP/Vista下运行得非常好(因为它是在这些操作系统版本为当前/最新版本时发布的)-问题是现在该项目仅限于Windows XP/Vista用户(由于该.dll)-当它在Windows 7下运行时,它会稍微出现故障(即,与Windows XP/Vista相比产生不同的结果) 我认为问题在于微软一定改变了什么(在Windows库中还是什么?),

我有一个windows.dll文件(来自第三方-已经停止支持它,我没有C源代码来纠正问题)

我正在我的一个项目中使用.dll

.dll文件在Windows XP/Vista下运行得非常好(因为它是在这些操作系统版本为当前/最新版本时发布的)-问题是现在该项目仅限于Windows XP/Vista用户(由于该.dll)-当它在Windows 7下运行时,它会稍微出现故障(即,与Windows XP/Vista相比产生不同的结果)

我认为问题在于微软一定改变了什么(在Windows库中还是什么?),这影响了兼容性

所以我想知道-我知道这不是最好的选择,但作为一个临时/黑客解决办法,我可以为Windows 7用户模拟Windows XP/Vista功能,也就是说,他们的任何项目都是为此设计的-例如=>(允许Linux功能在Windows上执行)


感谢所有建议/解决方法。

听起来太简单了:但是Windows兼容模式如何?也许它可以工作。

在Windows 7中,您可以在兼容模式下运行可执行文件,并将其设置为在与Windows XP兼容的模式下运行。有关详细信息,请参阅


请注意,您不能强制此.DLL始终使用兼容模式,但您可以更改安装程序,以便为执行此操作的用户或计算机进行适当的注册表设置

您只需按如下方式添加注册表项。在下面:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Application Compatibility\Layers
添加一个键,如:

"Path\To\Program\YourExecutable.exe"=WINXPSP2

这将导致您的程序始终在兼容模式下运行。如果您愿意只为当前用户设置,也可以在HKCU中进行设置。

您可以尝试在Windows 7上运行应用程序,并将结果与本机Windows XP的结果进行比较。

某些Windows 7具有完整的XP,您可以在其中以某种方式运行旧程序我想你右键点击EXE并通过一些向导。什么是兼容性问题?也就是说,当你说它“轻微故障”和“产生不同的结果”时,这些区别到底是什么?我之所以这样问,是因为有人知道操作系统兼容性的差异。谢谢,尽管他们是一种通用/自动的方法来对特定的.dll进行这些更改吗?-我想让最终用户尽可能容易地使用-而不是通过几个步骤。@newtopHP:您不能设置为.DLL,但可以在您的exe上设置它。我将编辑我的答案…感谢您提供的信息性编辑,但这并不能解决我的问题,因为核心在.DLL中,兼容模式只接受.exe扩展。@newbtophp:只需对使用.exe的每个应用程序执行此操作。没有特定于DLL的选项。