Comment puis-je obtenir la lettre du lecteur système?

Comment trouver la lettre de pilote du disque dur principal sur un système d’exploitation Windows?

C’est-à-dire le lecteur avec Program Files , System32 , etc.

    Il existe une variable d’environnement appelée SystemDrive qui est définie sur le lecteur système (ce qui est assez surprenant). L’appel de getenv() est la façon dont vous pouvez y accéder.

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

    Cette page répertorie toute une série de variables d’environnement disponibles si vous ne pouvez pas compter sur des répertoires spécifiques existant sur le lecteur système.

    Vous pouvez également utiliser l’appel API Windows, SHGetSpecialFolderPath () et transmettre le CSIDL correct. Ensuite, vous ne devriez pas avoir à compter sur les variables d’environnement.

    Bien que notez sur ces pages que cela a été remplacé par d’autres fonctions dans Vista (il devrait toujours fonctionner car cette fonction devient une enveloppe autour du nouveau).

    L’appel API GetWindowsDirectory pourrait vous être utile. Vous pouvez parsingr davantage ces informations à l’aide d’API pour parsingr les informations de lettre de lecteur.

    SYSTEMDRIVE

    FICHIERS DE PROGRAMME

    SYSTEMROOT

    WINDIR

    Ne présumez pas que Program Files se trouve sur le même lecteur que Windows. C’est généralement le cas. Habituellement.

    N’utilisez jamais les variables env comme dans la mauvaise réponse ci-dessus.
    Les variables env sont modifiables par l’utilisateur.

    Voir Obtention d’informations système sur MSDN. Il explique comment obtenir des informations système en profondeur pour la plupart. très instructif.