Last active
February 11, 2021 19:16
-
-
Save kamermans/e341fd3158bc1431fb561ef7dc8dc856 to your computer and use it in GitHub Desktop.
Modify PuTTY sessions in Golang by editing the Windows Registry
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"net/url" | |
"golang.org/x/sys/windows/registry" | |
) | |
const ( | |
baseKey = `SOFTWARE\SimonTatham\PuTTY\Sessions` | |
beep = 2 // Flash | |
fontQuality = 3 // ClearType | |
font = "Consolas" | |
) | |
func main() { | |
withOpenKey("", registry.ENUMERATE_SUB_KEYS, func(key registry.Key) { | |
sessions, err := key.ReadSubKeyNames(-1) | |
checkError(err) | |
for _, session := range sessions { | |
sessionNice, _ := url.QueryUnescape(session) | |
fmt.Printf("%v\n", sessionNice) | |
withOpenKey(session, registry.SET_VALUE, func(key registry.Key) { | |
checkError(key.SetStringValue("Font", font)) | |
checkError(key.SetDWordValue("Beep", beep)) | |
checkError(key.SetDWordValue("FontQuality", fontQuality)) | |
}) | |
} | |
}) | |
} | |
func checkError(err error) { | |
if err != nil { | |
panic(err) | |
} | |
} | |
func withOpenKey(key string, access uint32, innerFunc func(key registry.Key)) { | |
keyName := baseKey | |
if key != "" { | |
keyName += `\` + key | |
} | |
k, err := registry.OpenKey(registry.CURRENT_USER, keyName, access) | |
if err != nil { | |
checkError(err) | |
} | |
defer k.Close() | |
innerFunc(k) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment