mirror of
https://github.com/amnezia-vpn/amneziawg-windows-client.git
synced 2026-06-01 22:18:53 +02:00
66 lines
1.1 KiB
Go
66 lines
1.1 KiB
Go
package services
|
|
|
|
import (
|
|
"golang.org/x/sys/windows/registry"
|
|
)
|
|
|
|
const userRegKey = `Software\AmneziaWG`
|
|
|
|
var userKey registry.Key
|
|
|
|
func openUserKey() (registry.Key, error) {
|
|
if userKey != 0 {
|
|
return userKey, nil
|
|
}
|
|
var err error
|
|
userKey, err = registry.OpenKey(registry.CURRENT_USER, userRegKey, registry.QUERY_VALUE)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return userKey, nil
|
|
}
|
|
|
|
func createUserKey() (registry.Key, error) {
|
|
closeUserKey()
|
|
var err error
|
|
userKey, _, err = registry.CreateKey(registry.CURRENT_USER, userRegKey, registry.SET_VALUE)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return userKey, nil
|
|
}
|
|
|
|
func closeUserKey() {
|
|
if userKey == 0 {
|
|
return
|
|
}
|
|
|
|
userKey.Close()
|
|
userKey = 0
|
|
}
|
|
|
|
func UserKeyString(name string) string {
|
|
key, err := openUserKey()
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
val, _, err := key.GetStringValue(name)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return val
|
|
}
|
|
|
|
func SetUserKeyString(name string, value string) error {
|
|
key, err := createUserKey()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer closeUserKey()
|
|
err = key.SetStringValue(name, value)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|