在某些系统上无法访问DLL

时间:2017-07-06 07:59:45

标签: c# .net dll

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

1 个答案:

答案 0 :(得分:1)

请浏览Dynamic-Link Library Search Order并查看适用的情况。最可能的情况是启用了SafeDllSearchMode的标准DLL搜索顺序:

  

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

     
      
  • 加载应用程序的目录。
  •   
  • 系统目录。使用GetSystemDirectory函数获取此目录的路径。
  •   
  • 16位系统目录。没有函数可以获取此目录的路径,但会搜索它。
  •   
  • Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
  •   
  • 当前目录。
  •   
  • PATH环境变量中列出的目录。请注意,这不包括指定的每个应用程序路径   App Paths注册表项。时,不使用App Paths键   计算DLL搜索路径。
  •   

请注意,如果DLL是托管程序集(您没有提及它),则.Net程序集搜索规则适用,请参阅How the Runtime Locates Assemblies。显然,GAC也会对托管DLL起作用。

我只是给你指点进行自己的调查,因为你的帖子缺少相关信息。