SHGetKnownFolderPath Vs.从Registry读取系统文件夹路径

时间:2015-05-16 19:48:21

标签: windows security known-folders

我是Windows系统编程的新手。在我的项目中,我需要阅读已注册的" ProgramFiles" 32 / 64bit进程的位置。

我最终有两个选择:使用SHGetKnownFolderPath或从系统注册表中读取这些文件夹的值,但我有一些安全问题。有人可以在安全性和可靠性方面比较这两种方法。

1 个答案:

答案 0 :(得分:1)

您不会从注册表中未记录的随机位置读取内容,因为这只是Windows 当前存储该数据的实现细节:它可能很容易发生:

  • 在某个下一版本的Windows中,他们会决定将这些数据存储在其他地方;
  • 你发现的数据只存在于某些配置上(某些特定的IE版本安装,机器没有加入Active Directory,那里没有文件夹重定向,......) - 但你可以'我知道,没有任何文件可以保证你的任何事情。

正确的方法是使用操作系统提供的记录的接口,Microsoft明确承诺提供兼容性(他们承诺今天有效的公共功能 - 如果根据使用文档 - 明天将继续工作。)

tl; dr :如果您希望在Vista之前保持与Windows版本兼容,请使用SHGetKnownFolderPath - 或SHGetFolderPath这是一件好事,因为Windows XP似乎仍然拥有比所有OS X版本更多的市场份额。