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
我想“好吧,这是葡萄酒”,并运行在Windows XP上的VirtualBox。但这是错误的Windows返回。
对不起,我的英语。
2条答案
按热度按时间yiytaume1#
使用
CreateProcess
函数,可以使用syscall
包在Go中编写:ryoqjall2#
对于Windows,您可以使用系统API:shell32.dll.ShellExecuteW。它在另一个进程上运行,所以即使你的主程序已经终止,它也会继续运行。因此,你只需要在程序退出之前调用它来删除程序。为了确保delete命令在程序终止之后被调用,你可以等待一段时间再删除它(使用start-sleep)。
示例
启动-睡眠2;del“C:\xxx.exe”
powershell对于多个命令使用
;
进行拆分命令1;命令2;命令3
启动-睡眠3;del“C:\xxx.exe”