您现在的位置是:首页 > 文章详情

C#获取windows 10的下载文件夹路径

日期:2018-10-24点击:458

Windows没有为“下载”文件夹定义CSIDL,并且通过Environment.SpecialFolder枚举无法使用它

但是,新的Vista 知名文件夹 API确实使用ID定义它FOLDERID_Downloads获取实际值的最简单方法可能是P / invoke SHGetKnownFolderPath

public static class KnownFolder { public static readonly Guid Downloads = new Guid("374DE290-123F-4565-9164-39C4925E467B"); } [DllImport("shell32.dll", CharSet=CharSet.Unicode)] static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out string pszPath); static void Main(string[] args) { string downloads; SHGetKnownFolderPath(KnownFolder.Downloads, 0, IntPtr.Zero, out downloads); Console.WriteLine(downloads); }

 

请注意,pinvoke.net上给出的P / invoke不正确,因为它无法使用Unicode字符集。此外,我还利用了这个API返回COM分配器分配的内存这一事实。上面P / invoke的默认编组是释放返回的内存,CoTaskMemFree这对我们的需求是完美的。

请注意,这是一个Vista和更高版本的API,不要试图在XP / 2003或更低版本上调用它。

原文链接:https://yq.aliyun.com/articles/676875
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章