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

Bri*_* W. 6 .net c# windows .net-2.0

我正在使用.NET 2.0.我注意到,常见的桌面和常见的"开始"菜单文件夹似乎没有Environment.SpecialFolder成员.

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

Joh*_*don 2

我使用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);

}
Run Code Online (Sandbox Code Playgroud)