如何获取 C# 中常用桌面和开始菜单目录的路径?

发布于 2024-08-18 03:40:34 字数 257 浏览 5 评论 0原文

我正在使用.NET 2.0。我注意到似乎没有 Environment.SpecialFolder< /a> 常用桌面和常用开始菜单文件夹的成员。

我更喜欢一种不涉及加载 shell32.dll 和使用 SHGetSpecialFolderPath 的方法

I'm using .NET 2.0. I noticed that there doesn't seem to be a Environment.SpecialFolder member for the common Desktop and common Start Menu folders.

i would prefer a way that doesn't involve loading shell32.dll and using SHGetSpecialFolderPath

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

素衣风尘叹 2024-08-25 03:40:34

此代码段使用注册表访问公共桌面:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
key = key.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders");
String commonDesktop = key.GetValue("Common Desktop").ToString();

来自此处

This code snippet uses the registry to access the common desktop:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
key = key.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders");
String commonDesktop = key.GetValue("Common Desktop").ToString();

From here

仅一夜美梦 2024-08-25 03:40:34

我使用P/Invoke...0x19对应于通用桌面枚举,0x16对应于通用开始菜单

    public static string GetCommonDesktopFolder()
    {
        var sb = new StringBuilder(260);
        SHGetFolderPath(IntPtr.Zero, 0x19, IntPtr.Zero, 0, sb); // CSIDL_COMMON_DESKTOPDIRECTORY
        return sb.ToString();
    }

    [DllImport("shell32.dll")]
    private static extern int SHGetFolderPath(
                IntPtr hwndOwner, int nFolder, IntPtr hToken,
                uint dwFlags, StringBuilder pszPath);

}

I use P/Invoke... 0x19 corresponds to the Common Desktop enumeration, 0x16 corresponds to the Common Start Menu

    public static string GetCommonDesktopFolder()
    {
        var sb = new StringBuilder(260);
        SHGetFolderPath(IntPtr.Zero, 0x19, IntPtr.Zero, 0, sb); // CSIDL_COMMON_DESKTOPDIRECTORY
        return sb.ToString();
    }

    [DllImport("shell32.dll")]
    private static extern int SHGetFolderPath(
                IntPtr hwndOwner, int nFolder, IntPtr hToken,
                uint dwFlags, StringBuilder pszPath);

}
盛夏已如深秋| 2024-08-25 03:40:34

尝试将 0x19 和 0x16 转换为 Environment.SpecialFolder 以传递给 Environment.GetFolderPath

Try casting 0x19 and 0x16 to Environment.SpecialFolder to pass to Environment.GetFolderPath

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文