静态链接SHFolder组件

Static linking SHFolder components

本文关键字:组件 SHFolder 链接 静态      更新时间:2023-10-16

我有一个用c++ Builder XE开发的Win32应用程序,在过去的几年里,它在WinPE 2.x/3.0环境下运行得很好。在过去的几个月里,我做了一些重大的改变,但现在它已经完成,我试图在WinPE下运行它,我得到错误信息:程序无法启动,因为SHFOLDER.DLL从您的计算机中丢失。

由于我无法控制WinPE环境,并且此dll不包含在WinPE中,我的第一个想法是尝试静态链接必要的组件。但是,这个dll提供的功能似乎只能从dll中获得。

我没能找到这个DLL的任何有用的信息,不幸的是,我不知道我添加的哪个功能现在需要这个DLL。我希望有人有这方面的经验,可以帮助引导我静态链接所需的组件,或找到一个解决方案,使这个应用程序不再需要dll。谢谢!

shfolder.dll用于获取shell文件夹路径,如Desktop, My Documents, Windows目录等。由于SHGetSpecialFolderPath(), SHGetFolderLocation(), SHGetKnownFolderPath()等之间的实现差异,它在所有版本的Windows上始终如一地实现SHGetFolderPath()

MSDN解释得更好:

这个函数是SHGetSpecialFolderPath的超集,包含在早期版本的Shell。在之前的系统中包含Shell32.dll 5.0版本(Windows千禧年版)在Windows 2000中,SHGetFolderPath通过与Microsoft Internet Explorer 4.0和后来的版本。dll总是调用当前平台的此函数的版本。如果失败,它会尝试模拟适当的行为。SHFolder.dll将继续包含在向后兼容,但该函数现在在二。

DLL本身是可重新分发的,因此您可以将其包含在WinPE中。您也可以使用任何其他函数,如果它们适合您,并且您不需要任何特殊情况。