Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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
Delphi InternetCrackUrl返回FALSE,GetLastError为120_Delphi_Soap_Wininet - Fatal编程技术网

Delphi InternetCrackUrl返回FALSE,GetLastError为120

Delphi InternetCrackUrl返回FALSE,GetLastError为120,delphi,soap,wininet,Delphi,Soap,Wininet,我有一个导出函数的DLL 在该函数的某一点上,调用了from Wininet 除了在一台特定的计算机上,InternetCrackUrl返回FALSE和GetLastError返回120(未执行错误调用) 我看不出这台计算机有什么特别之处,它是一台装有Win10 PRO的台式机。它在其他任何地方都可以工作,在具有不同版本Windows的不同计算机上,甚至在具有Win10的其他计算机上 我还做了一个独立的测试应用程序,它只调用InternetCrackUrl,而且也可以工作,这让我相信它一定是关于

我有一个导出函数的DLL

在该函数的某一点上,调用了from Wininet

除了在一台特定的计算机上,
InternetCrackUrl
返回
FALSE
GetLastError
返回
120
(未执行错误调用)

我看不出这台计算机有什么特别之处,它是一台装有Win10 PRO的台式机。它在其他任何地方都可以工作,在具有不同版本Windows的不同计算机上,甚至在具有Win10的其他计算机上

我还做了一个独立的测试应用程序,它只调用
InternetCrackUrl
,而且也可以工作,这让我相信它一定是关于DLL的


还有什么可以检查的吗?

我使用Process Explorer检查加载了哪个
WinInet.dll

我发现我的DLL与使用它的应用程序位于同一目录中。 在同一个目录中,也有一些1997年的
WININET.DLL
的古老版本,一定有人复制了它,这就是我的DLL加载的内容


当我删除旧的
WININET.DLL
时,System32中的那一个已经加载,现在可以工作了。

我使用Process Explorer检查加载了哪个
WININET.DLL

我发现我的DLL与使用它的应用程序位于同一目录中。 在同一个目录中,也有一些1997年的
WININET.DLL
的古老版本,一定有人复制了它,这就是我的DLL加载的内容


当我删除旧的
WININET.DLL
时,System32中的那一个已经加载,现在它可以工作了。

在DLL中调用
InternetCrackUrl()
时出现此错误是没有意义的,但在同一台机器上的应用程序中调用时根本不会失败。它们应该在同一WinInet DLL中调用同一函数。因此,这让我认为失败在操作系统内部更深层次。可能WinInet内部使用的依赖项失败了,错误会冒泡到
InternetCraskul()
。可能您的DLL或加载它的应用程序有一个并排清单,该清单加载的WinInet版本与独立应用程序加载的版本不同?当在DLL中调用时,
InternetCrackUrl()
会因此错误而失败,但在同一台计算机上的应用程序中调用时根本不会失败。它们应该在同一WinInet DLL中调用同一函数。因此,这让我认为失败在操作系统内部更深层次。可能WinInet内部使用的依赖项失败了,错误会冒泡到
InternetCraskul()
。可能您的DLL或加载它的应用程序有一个并排清单,该清单加载的WinInet版本与独立应用程序加载的版本不同?或者类似的。