//go:build windows package main import ( "os" "path/filepath" "strings" "golang.org/x/sys/windows/registry" "github.com/wailsapp/wails/v3/pkg/w32" ) // getWindowsSpecialFolder 从注册表读取 Windows 特殊文件夹的真实路径 func getWindowsSpecialFolder(guid string) string { key, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders`, registry.READ) if err != nil { return "" } defer key.Close() val, _, err := key.GetStringValue(guid) if err != nil || val == "" { return "" } path := os.ExpandEnv(val) if _, err := os.Stat(path); err != nil { return "" } return path } // getWindowsDrivePaths 返回所有可用盘符路径 func getWindowsDrivePaths() map[string]string { paths := make(map[string]string) for _, drive := range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" { path := string(drive) + ":\\" if _, err := os.Stat(path); err == nil { key := string(drive) paths[key] = path } } return paths } // setWindowTitleBar 设置原生标题栏颜色 + 主题模式 func setWindowTitleBar(hwnd uintptr, color uint32, isDark bool) { w32.SetTheme(hwnd, isDark) w32.SetTitleBarColour(hwnd, color) } // resolveFolderPaths 解析特殊文件夹路径 func resolveFolderPaths(homeDir string) map[string]string { paths := make(map[string]string) folderGUIDs := map[string]string{ "desktop": "{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}", "documents": "{D20B4C7F-5EA7-424C-B25E-039F6F1FCC8A}", "downloads": "{374DE290-123F-4565-9164-39C4925E467B}", } for name, guid := range folderGUIDs { if p := getWindowsSpecialFolder(guid); p != "" { paths[name] = p } else { paths[name] = filepath.Join(homeDir, strings.ToUpper(name[:1])+name[1:]) } } for k, v := range getWindowsDrivePaths() { paths["root_"+k] = v } return paths }