在 UWP 应用程序中使用 SHGetKnownFolderPath 是否违规?

Is it a violation to use SHGetKnownFolderPath in a UWP app?

在我的 UWP 应用中,为了获取用户下载文件夹的路径,我正在导入 Shell32.dll 并调用方法 SHGetKnownFolderPath with the shell folder value for downloads folder "{374DE290-123F-4565-9164-39C4925E467B}" (as mentioned in Windows 10 User Shell Folders Restore Default Paths).

现在我的问题是,上述获取文件夹路径的方式是否违反了任何 UWP 建议?我的应用程序会通过微软商店发布的认证吗?还是会像这个问题的回答里说的那样被拒绝-

要在 uwp 中使用下载文件夹,您可以使用 Windows.Storage Api。如果你想在下载文件夹中创建文件,你可以使用以下方法。

StorageFile sf = await DownloadsFolder.CreateFileAsync("testMarker");

并且你可以通过上面的文件得到DownloadsFolder的路径。但是您无法直接访问带有路径的文件。

StorageFile sf = await DownloadsFolder.CreateFileAsync("testMarker");
ArrayList numbers = new ArrayList(sf.Path.Split(new char[] { '\' }));
numbers.RemoveRange(numbers.Count - 2, 2);
var downloadPath = string.Join("\", numbers.ToArray());

SHGetKnownFolderPath 在 uwp 中不受支持,但您可以在桌面桥接应用程序中使用它,您可以在将桌面应用程序 调用到 UWP 应用程序之前调用任何方法。

更一般的答案:您可以使用 UserDataPaths class 替代 Windows 10 中的 SHGetKnownFolderPath