golang:在Windows上为pdf文件运行默认应用程序

I'd like to open a PDF file in the filesystem from go with the default application. How can I do that? From the command line I just write the filename of the pdf file and the application opens (with the requested file). When I try to use exec.Command() I get an error (not surprisingly) exec: "foo.pdf": executable file not found in %PATH%.

package main

import (
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("foo.pdf")
    err := cmd.Start()
    if err != nil {
        log.Fatal(err)
    }
    err = cmd.Wait()
    if err != nil {
        log.Fatal(err)
    }

}

You must launch cmd /C start foo.pdf. This will let the start command find the correct executable for you.

cmd := exec.Command("cmd", "/C start path_to_foo.pdf")
exec.Command("rundll32.exe", "url.dll,FileProtocolHandler", "path_to_foo.pdf")

should also handle it.

Note that still the right way to do it is to use a C wrapper around the ShellExecute() API function exported by shell32.dll, and the "w32" library seems to provide this wrapper right away.