如何从Delphi中的已知文件夹GUID中获取文件夹路径



我有一个KNOWNFOLDERID,我想知道相应的路径,比如C:。。。。\文件夹。

KNOWNFOLDERID可以在这里找到。http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx

我想使用win-api(我不想构建一个包含所有KNOWNFOLDERID和路径的数组)。

感谢

只需调用SHGetKnownFolderPath API函数。

由于这个函数是在Vista中添加的,所以它不会在Delphi7附带的库单元中声明。所以你需要自己申报。

type
  KNOWNFOLDERID = TGuid;
function SHGetKnownFolderPath(
  const rfid: KNOWNFOLDERID;
  dwFlags: DWORD; 
  hToken: THandle; 
  out ppszPath: PWideChar
): HResult; stdcall; external 'Shell32.dll';

现在,由于这个功能是在Vista中添加的,尝试在XP上调用它会导致失败。因此,我建议使用CSIDL函数而不是Vista已知的文件夹API来处理此问题。

您无法构建已知文件夹ID和路径的数组,因为无法保证每个系统中的路径都相同。已知文件夹有默认路径,但它们只是默认路径,可以更改。许多公司环境都这样做,例如,将用户的文档文件夹移动到可以更容易备份的网络共享中。

在任何情况下,您提供的链接中的链接都包含您需要的所有信息:

SHGetKnownFolderPath是Win API函数,返回已知文件夹的路径。请注意,您需要释放自己通过调用CoTaskMemFree返回的unicode char指针。

如果您首选使用COM对象,则可以使用IKNOWNFOLDER。

相关内容

  • 没有找到相关文章

最新更新