44 lines
748 B
Go
44 lines
748 B
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"syscall"
|
|
|
|
"golang.org/x/sys/windows/registry"
|
|
)
|
|
|
|
func setProxy(enable bool, host string, port string) error {
|
|
k, _, err := registry.CreateKey(
|
|
registry.CURRENT_USER,
|
|
`Software\Microsoft\Windows\CurrentVersion\Internet Settings`,
|
|
registry.SET_VALUE,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if enable {
|
|
k.SetDWordValue("ProxyEnable", 1)
|
|
|
|
addr := fmt.Sprintf("%s:%s", host, port)
|
|
val := fmt.Sprintf("http=%s;https=%s", addr, addr)
|
|
|
|
k.SetStringValue("ProxyServer", val)
|
|
|
|
} else {
|
|
k.SetDWordValue("ProxyEnable", 0)
|
|
}
|
|
|
|
k.Close()
|
|
|
|
d := syscall.NewLazyDLL("wininet.dll")
|
|
o := d.NewProc("InternetSetOptionW")
|
|
o.Call(0, 39, 0, 0)
|
|
o.Call(0, 37, 0, 0)
|
|
|
|
return nil
|
|
}
|