golang.zx2c4.com/wireguard/windows@v0.5.4-0.20230123132234-dcc0eb72a04b/conf/admin_windows.go (about)

     1  /* SPDX-License-Identifier: MIT
     2   *
     3   * Copyright (C) 2019-2022 WireGuard LLC. All Rights Reserved.
     4   */
     5  
     6  package conf
     7  
     8  import "golang.org/x/sys/windows/registry"
     9  
    10  const adminRegKey = `Software\WireGuard`
    11  
    12  var adminKey registry.Key
    13  
    14  func openAdminKey() (registry.Key, error) {
    15  	if adminKey != 0 {
    16  		return adminKey, nil
    17  	}
    18  	var err error
    19  	adminKey, err = registry.OpenKey(registry.LOCAL_MACHINE, adminRegKey, registry.QUERY_VALUE|registry.WOW64_64KEY)
    20  	if err != nil {
    21  		return 0, err
    22  	}
    23  	return adminKey, nil
    24  }
    25  
    26  func AdminBool(name string) bool {
    27  	key, err := openAdminKey()
    28  	if err != nil {
    29  		return false
    30  	}
    31  	val, _, err := key.GetIntegerValue(name)
    32  	if err != nil {
    33  		return false
    34  	}
    35  	return val != 0
    36  }