gpt4 book ai didi

.net - 如何以编程方式派生Windows下载文件夹 "%USERPROFILE%/Downloads"?

转载 作者:行者123 更新时间:2023-12-02 17:32:55 25 4
gpt4 key购买 nike

在.NET中,我们可以检索“特殊文件夹”的路径,例如文档/桌面等。今天我试图找到一种方法来获取“下载”文件夹的路径,但它看起来不够特别。

我知道我可以只执行“C:\Users\Username\Downloads”,但这似乎是一个丑陋的解决方案。那么如何使用 .NET 检索路径呢?

最佳答案

是的,这很特别,直到 Vista 才可以发现这个文件夹的名称。 .NET 仍然需要支持以前的操作系统。您可以调用 SHGetKnownFolderPath() 来绕过此限制,如下所示:

using System.Runtime.InteropServices;
...

public static string GetDownloadsPath() {
if (Environment.OSVersion.Version.Major < 6) throw new NotSupportedException();
IntPtr pathPtr = IntPtr.Zero;
try {
SHGetKnownFolderPath(ref FolderDownloads, 0, IntPtr.Zero, out pathPtr);
return Marshal.PtrToStringUni(pathPtr);
}
finally {
Marshal.FreeCoTaskMem(pathPtr);
}
}

private static Guid FolderDownloads = new Guid("374DE290-123F-4565-9164-39C4925E467B");
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
private static extern int SHGetKnownFolderPath(ref Guid id, int flags, IntPtr token, out IntPtr path);

关于.net - 如何以编程方式派生Windows下载文件夹 "%USERPROFILE%/Downloads"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com