exec_windows.go

 1// +build windows
 2
 3package open
 4
 5import (
 6	"os"
 7	"os/exec"
 8	"path/filepath"
 9	"strings"
10)
11
12var (
13	cmd      = "url.dll,FileProtocolHandler"
14	runDll32 = filepath.Join(os.Getenv("SYSTEMROOT"), "System32", "rundll32.exe")
15)
16
17func cleaninput(input string) string {
18	r := strings.NewReplacer("&", "^&")
19	return r.Replace(input)
20}
21
22func open(input string) *exec.Cmd {
23	return exec.Command(runDll32, cmd, input)
24}
25
26func openWith(input string, appName string) *exec.Cmd {
27	return exec.Command("cmd", "/C", "start", "", appName, cleaninput(input))
28}