Как я могу получить текущий пользовательский каталог?

Это может сделать так при неявно или явной установке выравнивания структуры. Структура, которая выравнивается 4, будет всегда кратной 4 байтам, даже если бы размер ее участников был бы чем-то, что это не несколько 4 байта.

Также библиотека может быть скомпилирована под x86 с 32-разрядным ints, и можно выдерживать сравнение, его компоненты на 64-разрядном процессе были бы давать Вам различный результат при выполнении этого вручную.

93
задан bytecode77 28 November 2016 в 21:44
поделиться

5 ответов

Возможно, это будет хорошим решением: учитывая, является ли это Vista / Win7 или XP, и без использования переменных среды:

string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName;
if ( Environment.OSVersion.Version.Major >= 6 ) {
    path = Directory.GetParent(path).ToString();
}

Хотя использование переменной среды гораздо более понятно.

45
ответ дан 24 November 2019 в 06:14
поделиться

Попробуйте:

System.Environment.GetEnvironmentVariable("USERPROFILE");

Изменить:

Если версия .NET, которую вы используете, 4 или выше, вы можете использовать Перечисление Environment.SpecialFolder :

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
154
ответ дан 24 November 2019 в 06:14
поделиться
Environment.GetEnvironmentVariable("userprofile")

Попытка перейти вверх из именованной папки SpecialFolder чревата проблемами. Существует множество причин, по которым папки не будут там, где вы ожидаете - пользователи могут перемещать их самостоятельно, объект групповой политики может перемещать их, перенаправление папок на пути UNC и т. Д.

Использование переменной среды ] для профиля пользователя должна отражать любую из этих возможных проблем.

4
ответ дан 24 November 2019 в 06:14
поделиться

Попробуйте:

System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/
3
ответ дан 24 November 2019 в 06:14
поделиться

Возиться с переменными среды или жестко заданными смещениями родительских папок никогда не будет хорошей идеей, когда есть API для получения нужной информации, вызовите SHGetSpecialFolderPath (..., CSIDL_PROFILE , ...)

1
ответ дан 24 November 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: