Получите Windows Распознанные переменные среды с Golang - PullRequest
0 голосов
/ 28 марта 2020

есть ли способ получить путь к папке, используя Windows Распознанные переменные среды значения с Go?

Я знаю, Python может это сделать, но я не могу понять это с помощью Go. В качестве примера я хочу не получить путь для пользовательской папки загрузок, используя переменную CSIDL_DEFAULT_DOWNLOADS. Таким образом, если пользователь по какой-либо причине изменил расположение папки «Загрузки», мой код получит правильный путь, как только эта переменная сохранит новое местоположение, отличное от значения по умолчанию.

Спасибо за внимание.

PS: os.Getenv ничего не возвращает с ключом CSIDL_DEFAULT_DOWNLOADS.

1 Ответ

0 голосов
/ 01 апреля 2020

Решение, которое я нашел для Windows Путь к папке загрузок использует пакет реестра и код GUID папки.

package main

import (
    "fmt"

    "golang.org/x/sys/windows/registry"
)

func main() {
    k, err := registry.OpenKey(registry.CURRENT_USER,
        `SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders`,
        registry.QUERY_VALUE)
    if err != nil {
        panic(err)
    }
    defer k.Close()

    s, _, err := k.GetStringValue("{374DE290-123F-4565-9164-39C4925E467B}")
    if err != nil {
        panic(err)
    }

    fmt.Println(s)
}

...