Maison > développement back-end > Golang > Comment accéder à tous les lecteurs Windows par programme dans Go ?

Comment accéder à tous les lecteurs Windows par programme dans Go ?

DDD
Libérer: 2024-10-29 02:48:30
original
820 Les gens l'ont consulté

How to Access All Windows Drives Programmatically in Go?

Accès à tous les lecteurs Windows dans Go

Dans Go, récupérer une liste complète de tous les lecteurs sur un système Windows nécessite une approche spécifique. Pour éviter la spécification manuelle des lettres de lecteur comme "program.exe C:" pour chaque lecteur, une solution dynamique est recherchée.

En utilisant la fonction GetLogicalDrives du kernel32.dll, il est possible d'obtenir une bitmap représentant lecteurs disponibles. La fonction bitsToDrives convertit ce bitmap en une liste de lettres de lecteur correspondantes, telles que ["A", "B", "C",...].

Le code Go suivant illustre cette approche :

<code class="go">package main

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&1 == 1 {
            drives = append(drives, availableDrives[i])
        }
        bitMap >>= 1
    }

    return
}</code>
Copier après la connexion

En utilisant cette méthode, vous pouvez désormais parcourir tous les lecteurs d'un système Windows de manière transparente, sans vous fier aux lettres de lecteur spécifiées par l'utilisateur.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal