我分发了一个Win32 Delphi应用程序,它使用ADVAPI32.DLL来调用一些加密和解密例程.它适用于现代版本的Windows,但少数客户使用一些非常旧版本的Windows,如Windows Vista和未修补的Windows 7.对于这些客户,ADVAPI32.Dll的版本已过时,有时会导致解密错误.我知道advapi32.dll是一个"已知"的系统DLL,因此无法在本地加载(我的意思是,从我的app文件夹而不是System32),所以我该如何解决这个问题呢?我尝试使用DLL的重命名的本地副本,但这也没有工作...
首先,您在法律上不允许重新分发advapi32.dll.其次,您无法在旧系统上可靠地运行较新的系统DLL,它们具有依赖性,您需要提供更新的依赖项.许多系统DLL具有特殊的保护机制,防止加载不正确的DLL作为基本DLL劫持防御安全机制的一部分.最后,CryptDecrypt朋友以及其他类似功能在Vista和Windows 7中运行得非常好.如果遇到问题,可能是代码中的错误,或者您根本不遵守所述平台的Crypto API规定的限制.因此,最好发布您使用的代码,以及您在这些旧系统上获得的错误.