diff --git a/cmd/syncthing/openurl_windows.go b/cmd/syncthing/openurl_windows.go index 2f5eca8ef..a89ea4b77 100644 --- a/cmd/syncthing/openurl_windows.go +++ b/cmd/syncthing/openurl_windows.go @@ -9,8 +9,27 @@ package main -import "os/exec" +import "golang.org/x/sys/windows" func openURL(url string) error { - return exec.Command("cmd.exe", "/C", "start "+url).Run() + urlPtr, err := windows.UTF16PtrFromString(url) + if err != nil { + return err + } + + verbPtr, err := windows.UTF16PtrFromString("open") + if err != nil { + return err + } + + err = windows.ShellExecute( + 0, // hwnd + verbPtr, // operation + urlPtr, // file + nil, // parameters + nil, // directory + windows.SW_SHOWNORMAL, + ) + + return err }