Ariver
2026-07-06 7ed43baaa6be88a55952a3411575922c8d883a08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//go:build windows
 
package startup
 
import (
    "fmt"
    "os"
 
    "golang.org/x/sys/windows/registry"
)
 
const registryKey = `SOFTWARE\Microsoft\Windows\CurrentVersion\Run`
const appName = "PrivateVoice Dictation"
 
var legacyAppNames = []string{"VoiceSnap"}
 
func isEnabled() bool {
    removeLegacyValues()
 
    key, err := registry.OpenKey(registry.CURRENT_USER, registryKey, registry.QUERY_VALUE)
    if err != nil {
        return false
    }
    defer key.Close()
 
    val, _, err := key.GetStringValue(appName)
    return err == nil && val != ""
}
 
func setEnabled(enable bool) error {
    key, err := registry.OpenKey(registry.CURRENT_USER, registryKey, registry.SET_VALUE)
    if err != nil {
        return fmt.Errorf("failed to open registry key: %w", err)
    }
    defer key.Close()
 
    if enable {
        exe, err := os.Executable()
        if err != nil {
            return err
        }
        deleteLegacyValues(key)
        return key.SetStringValue(appName, fmt.Sprintf(`"%s"`, exe))
    }
 
    err = key.DeleteValue(appName)
    deleteLegacyValues(key)
    if err != nil && err != registry.ErrNotExist {
        return err
    }
    return nil
}
 
func deleteLegacyValues(key registry.Key) {
    for _, name := range legacyAppNames {
        _ = key.DeleteValue(name)
    }
}
 
func removeLegacyValues() {
    key, err := registry.OpenKey(registry.CURRENT_USER, registryKey, registry.SET_VALUE)
    if err != nil {
        return
    }
    defer key.Close()
    deleteLegacyValues(key)
}