package main
import "os"
func main() {
err := os.Remove(os.Args[1])
if err != nil {
panic(err)
}
}
编译此
GOOS = windows GOARCH = 386 go build test.go
然后在葡萄酒上运行
Z:\tmp>test.exe test.exe
fixme:process:SetProcessPriorityBoost (0xffffffff,1): stub
panic: remove test.exe: Access denied.
goroutine 1 [running]:
panic(0x462c40, 0x5b3f9ca0)
/usr/local/go/src/runtime/panic.go:500 +0x331
main.main()
/tmp/test.go:8 +0x70
Z:\tmp>fixme:console:CONSOLE_DefaultHandler Terminating process 8 on event 0
我认为"好吧,它的葡萄酒"并在VirtualBox上的Win XP中运行。但是,Windows中的错误会重新出现。
//对不起我的英文。
答案 0 :(得分:1)
使用CreateProcess
函数,可以使用syscall
包在Go中编写:
package main
import (
"fmt"
"syscall"
"os"
)
func main() {
// write your code here
// <----
fmt.Println("Blah Blah Blah")
// ---->
var sI syscall.StartupInfo
var pI syscall.ProcessInformation
argv := syscall.StringToUTF16Ptr(os.Getenv("windir")+"\\system32\\cmd.exe /C del "+os.Args[0])
err := syscall.CreateProcess(
nil,
argv,
nil,
nil,
true,
0,
nil,
nil,
&sI,
&pI)
if err != nil {
fmt.Printf("Return: %d\n", err)
}
}