在UWP应用中使用SHGetKnownFolderPath是否违反规定?

时间:2018-09-28 06:15:33

标签: c# windows uwp windows-10-universal universal

在我的UWP应用中,要获取用户的downloads文件夹的路径,我将导入Shell32.dll并调用方法SHGetKnownFolderPath,其中包含downloads文件夹"{374DE290-123F-4565-9164-39C4925E467B}"的shell文件夹值(如Windows 10 User Shell Folders Restore Default Paths中提到)。

现在我的问题是,以上获取文件夹路径的方式是否违反了任何UWP建议?我的应用程序将通过在Microsoft Store中发布的认证吗?还是会如该问题的答案中所述-How to access registry key in a UWP app?

被拒绝

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

要使用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中不受支持,但是您可以在桌面桥应用程序中使用它,可以在将convert桌面应用程序转换为UWP应用程序之前调用任何方法。