Как я могу получить букву системного диска? - PullRequest
11 голосов
/ 01 мая 2009

Как найти букву драйвера основного жесткого диска в операционной системе Windows?

То есть диск с Program Files, System32 и т. Д.

Ответы [ 5 ]

24 голосов
/ 01 мая 2009

Существует переменная окружения с именем SystemDrive, которая установлена ​​на системный диск (что удивительно). Вызов getenv() - это то, как вы можете добраться до него.

char *sysDrive = getenv ("SystemDrive");
if (sysDrive == NULL) {
    // vote me down.
} else {
    // vote me up and use it.
}

На этой странице перечислены все доступные переменные среды, если вы не можете полагаться на конкретные каталоги, существующие на системном диске.

В качестве альтернативы используйте вызов Windows API SHGetSpecialFolderPath () и передайте правильный CSIDL . Тогда вам не нужно полагаться на переменные окружения.

Хотя обратите внимание на те страницы, что это было заменено другими функциями в Vista (все равно должно работать, так как эта функция становится оболочкой для новой).

4 голосов
/ 01 мая 2009

Вызов API GetWindowsDirectory может помочь. Вы можете дополнительно проанализировать эту информацию, используя API для анализа информации о букве диска.

3 голосов
/ 01 мая 2009

SYSTEMDRIVE

PROGRAMFILES

SYSTEMROOT

WINDIR

Не предполагайте, что Program Files находится на том же диске, что и Windows. Обычно это так. Обычно.

0 голосов
/ 24 декабря 2017

См. Получение информации о системе в MSDN. Он объясняет, как получить системную информацию в глубине по большей части. очень информативно.

0 голосов
/ 01 мая 2009

Никогда не используйте переменные env, как в неправильном ответе выше.
Переменные env могут обновляться пользователем.

...