Heim > Backend-Entwicklung > Golang > Wie greife ich in Go programmgesteuert auf alle Windows-Laufwerke zu?

Wie greife ich in Go programmgesteuert auf alle Windows-Laufwerke zu?

DDD
Freigeben: 2024-10-29 02:48:30
Original
760 Leute haben es durchsucht

How to Access All Windows Drives Programmatically in Go?

Zugriff auf alle Windows-Laufwerke in Go

In Go erfordert das Abrufen einer umfassenden Liste aller Laufwerke auf einem Windows-System einen bestimmten Ansatz. Um die manuelle Angabe von Laufwerksbuchstaben wie „program.exe C:“ für jedes Laufwerk zu vermeiden, wird eine dynamische Lösung gesucht.

Durch die Verwendung der GetLogicalDrives-Funktion aus der kernel32.dll ist es möglich, eine Bitmap-Darstellung zu erhalten verfügbare Laufwerke. Die bitsToDrives-Funktion wandelt diese Bitmap in eine Liste entsprechender Laufwerksbuchstaben um, z. B. ["A", "B", "C",...].

Der folgende Go-Code demonstriert diesen Ansatz:

<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>
Nach dem Login kopieren

Mit dieser Methode können Sie jetzt alle Laufwerke auf einem Windows-System nahtlos durchlaufen, ohne sich auf benutzerdefinierte Laufwerksbuchstaben verlassen zu müssen.

Das obige ist der detaillierte Inhalt vonWie greife ich in Go programmgesteuert auf alle Windows-Laufwerke zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage