C# DLL可以';在某些系统上无法访问

C# DLL可以';在某些系统上无法访问,c#,.net,dll,C#,.net,Dll,我们的C#/.NET程序正在调用目标文件夹中的第三方DLL(x.DLL)。x、 dll然后调用同一文件夹中的另一个第三方dll y.dll。在某些系统中,这不起作用,因为x.dll找不到y.dll。 使用相同DLL的同一程序可以在大多数其他系统上运行,但如果它不工作,我们无法找出系统之间的差异。我们检查了属性,DLL没有被Windows阻止。此外,病毒扫描程序已被禁用。请检查并查看它适用于哪种情况。最可能的情况是启用了SafeDllSearchMode的标准DLL搜索顺序: 如果启用了Safed

我们的C#/.NET程序正在调用目标文件夹中的第三方DLL(x.DLL)。x、 dll然后调用同一文件夹中的另一个第三方dll y.dll。在某些系统中,这不起作用,因为x.dll找不到y.dll。 使用相同DLL的同一程序可以在大多数其他系统上运行,但如果它不工作,我们无法找出系统之间的差异。我们检查了属性,DLL没有被Windows阻止。此外,病毒扫描程序已被禁用。

请检查并查看它适用于哪种情况。最可能的情况是启用了SafeDllSearchMode的标准DLL搜索顺序:

如果启用了SafedlSearchMode,则搜索顺序如下:

  • 从中加载应用程序的目录
  • 系统目录。使用GetSystemDirectory函数获取此目录的路径
  • 16位系统目录。没有获取此目录路径的函数,但会对其进行搜索
  • Windows目录。使用GetWindowsDirectory函数获取此目录的路径
  • 当前目录
  • PATH环境变量中列出的目录。请注意,这不包括指定的每个应用程序路径 应用程序路径注册表项。在以下情况下不使用应用程序路径键: 计算DLL搜索路径
请注意,如果DLL是托管程序集(您没有提到它是托管程序集),则应用.Net程序集搜索规则,请参阅。显然,也将在托管DLL中发挥作用


我只是给你一些建议,让你自己做调查,因为你的帖子缺少相关信息。

那么.net版本呢?x86和x64的差异?使用ProcessMonitor并比较两个系统的跟踪,看看它们的差异在哪里以及原因