Maison >développement back-end >Golang >Comment obtenir une liste de tous les lecteurs sur un système Windows à l'aide de Go ?

Comment obtenir une liste de tous les lecteurs sur un système Windows à l'aide de Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 19:43:02312parcourir

How to Get a Listing of All Drives on a Windows System Using Go?

Obtenir la liste des lecteurs sous Windows à l'aide de Go

Pour rechercher automatiquement des fichiers sur tous les lecteurs d'un système Windows, il est nécessaire de récupérer une liste de tous les lecteurs utilisant Go. Le langage de programmation Go fournit des fonctions d'interaction avec l'API Windows, permettant l'énumération des lecteurs logiques.

Solution

La solution consiste à appeler la fonction GetLogicalDrives depuis le noyau32. bibliothèque dll. Cette fonction renvoie une bitmap indiquant les lecteurs disponibles. En traitant ce bitmap, nous pouvons obtenir les lettres de lecteur correspondant aux lecteurs disponibles :

<code class="go">import (
    "fmt"
    "syscall"
)

func main() {

    kernel32, _ := syscall.LoadLibrary("kernel32.dll")
    getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives")

    var drives []string

    if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 {
        // handle error
    } else {
        drives = bitsToDrives(uint32(ret))
    }

    fmt.Printf("%v", drives)

}

func bitsToDrives(bitMap uint32) (drives []string) {
    availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}

    for i := range availableDrives {
        if bitMap&amp;1 == 1 {
            drives = append(drives, availableDrives[i])
        }
        bitMap >>= 1
    }

    return
}</code>

La fonction bitsToDrives convertit le bitmap en un tableau de lettres de lecteur, et la fonction principale appelle fmt.Printf( ) pour imprimer la liste des lecteurs. Ce code vous permet de rechercher dynamiquement des fichiers sur tous les lecteurs disponibles sans nécessiter la saisie par l'utilisateur des lettres de lecteur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn