Maison >développement back-end >Golang >Comment accéder à tous les lecteurs Windows par programme dans 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>
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!