Как я могу получить путь к общим директорам Настольного и Меню "Пуск" в C#?

Я использую.NET 2.0. Я заметил, что, кажется, нет Среды. Член SpecialFolder для общих Настольных и общих папок Start Menu.

я предпочел бы путь, который не включает загружающийся shell32.dll и использование SHGetSpecialFolderPath

6
задан Brien W. 19 January 2010 в 21:24
поделиться

3 ответа

-- 3823425-

Я использую 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);

}
2
ответ дан 17 December 2019 в 04:47
поделиться

Этот фрагмент кода использует реестр для доступа к общему рабочему столу:

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();

из здесь

3
ответ дан 17 December 2019 в 04:47
поделиться

Попробуйте кастинг 0x19 и 0x16 в среду. Специальный пассажируют в среду. GetFolderPath

0
ответ дан 17 December 2019 в 04:47
поделиться