fix: 修复 Windows 端密码无法持久化的问题

Windows 端使用内存版 MemStore(keychain_other.go, 构建标签 !darwin),
进程退出后密码丢失,导致每次启动都需重新输入密码才能连接。

新增 keychain_windows.go,基于 Windows 凭据管理器(Credential Manager)
实现 Store 接口,密码经 Windows 登录凭据加密并持久化,跨重启保留。
keychain_other.go 构建标签收窄为 !darwin && !windows,作为 Linux 回退。

macOS 版本不受影响(仍由 keychain_darwin.go 独占编译)。
This commit is contained in:
2026-07-07 17:47:41 +08:00
parent 0c5e996bfd
commit 027d837cb2
4 changed files with 106 additions and 5 deletions
+3 -3
View File
@@ -4,17 +4,17 @@ go 1.26
require (
github.com/BurntSushi/toml v1.5.0
github.com/danieljoos/wincred v1.2.3
github.com/gorilla/websocket v1.5.3
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade
github.com/nicksnyder/go-i18n/v2 v2.5.1
github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8
golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v3 v3.0.1
modernc.org/sqlite v1.34.1
)
require golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect
require (
fyne.io/fyne/v2 v2.7.4
fyne.io/systray v1.12.1 // indirect
@@ -56,7 +56,7 @@ require (
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
golang.org/x/sys v0.46.0 // indirect
golang.org/x/sys v0.46.0
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
modernc.org/libc v1.55.3 // indirect
modernc.org/mathutil v1.6.0 // indirect