【问题标题】:Use SHGetKnownFolderPath() instead of ApplicationData class to get LocalAppData path使用 SHGetKnownFolderPath() 代替 ApplicationData 类来获取 LocalAppData 路径
【发布时间】:2018-10-16 14:44:45
【问题描述】:

在桌面桥应用程序中,我想找到该特定包的 LocalAppData(或 LocalCache)文件夹。我可以用ApplicationData class获取LocalCache文件夹路径:

using Windows.Storage;
string appData = ApplicationData.Current.LocalCacheFolder.Path;

或者,如果我使用SHGetKnownFolderPath 函数,我也可以获得相同的路径:

wchar_t* appData;
SHGetKnownFolderPath(FOLDERID_LocalAppData, KF_FLAG_FORCE_APP_DATA_REDIRECTION, NULL, &appData);

所以我的问题是:使用 SHGetKnownFolderPath() 代替 ApplicationData 类是否合适?两者在 UWP 环境中给出相同的路径。使用第一个有什么缺点/缺点吗?

【问题讨论】:

  • 如果第一种方法实际上涉及对 SHGetKnownFolderPath 的嵌套调用,但会产生一些额外开销,但 SHGetKnownFolderPath 根本不适用于 UWP 环境,我不会感到惊讶。不确定这样的限制是否适用于桌面桥应用程序。
  • 调用SHGetKnownFolderPath 的一个缺点是您负责内存管理。并且由于您要求 任何 缺点,VTT 正确地指出,此 API 调用不适用于 UWP 应用程序。即使此代码当前位于桌面应用程序中,也只会使其更难移动到 Windows 运行时组件中。

标签: winapi uwp desktop-bridge


【解决方案1】:

在将桌面应用程序转换为 UWP 应用程序之前,您可以调用任何方法。 转换成功后,如果你想扩展它,例如:Extend your desktop application with modern UWP components,那么你必须使用UWP API。

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2022-11-03
    • 2014-03-30
    相关资源
    最近更新 更多