package main
import "os"
func main() {
err := os.Remove(os.Args[1])
if err != nil {
panic(err)
}
}
Compile this
GOOS=windows GOARCH=386 go build test.go
Then run on wine
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
I think "ok, it's wine" and run in Win XP on VirtualBox. But that's error in Windows return.
//Sorry for my english.
Using CreateProcess
function, as can be written in Go by using syscall
package:
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
", err)
}
}