大家好,我是Golang语言社区主编彬哥,这篇给大家带来关于Go语言操作cmd命令执行windows平台的相关操作
~~~
1 关机、重启:
// 关闭计算机
func ShutDownEXE() {
fmt.Println("关闭主机")
arg := []string{"-s", "-t", "20"}
cmd := exec.Command("shutdown", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
// 重启计算机
func ReShutDownEXE() {
fmt.Println("重启主机")
arg := []string{"-r", "-t", "20"}
cmd := exec.Command("shutdown", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
2 根据进程名字kill进程:
// kill调进程 参数---taskkill /im notepad.exe /T /F
// 参数说明:strGameName为需要kill的进程的名字
func KillEXE(strGameName string) bool {
fmt.Println("kill调进程游戏:", strGameName)
strGameName = strGameName + ".exe"
arg := []string{"/im", strGameName}
cmd := exec.Command("taskkill", arg...)
if err := cmd.Run(); err != nil {
fmt.Println("Error: ", err)
}
return true
}
~~~
~~~
3 操作注册表,实现程序开机启动
//假如你要运行的程序名字为:"autorun.exe"使用命令为
//"reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f"
//(不包括引号)其中"C:\autorun.exe"为目标程序的路径.按着这样的命令就可以将你的程序添加到启动项中了
// RunEXE 参数---reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f
func RunEXE() {
fmt.Println("开机启动")
strEXEName = "C:\\Windows\\System32\\auto.vbs" // 需要启动文件的路径文件
arg := []string{"add", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "/v", "auto", "/t", "REG_SZ", "/d", strEXEName, "/f"}
cmd := exec.Command("reg", arg...)
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
4 实现启动执行程序隐藏进程(auto.bat文件就不给大家展示了,网上可以找到)
// 隐藏调进程 参数---start /b notepad.exe
func YinCangEXE(strEXEName string) {
fmt.Println("隐藏进程")
cmd := exec.Command("auto.bat")
d, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(d))
return
}
~~~
~~~
5 启动执行文件
// 启动exe
// 参数 strGameName 启动的执行文件的名字;strIPandPort 传递给exe的参数
func CallEXE(strGameName string, strIPandPort string) {
fmt.Println("CallEXE 开始启动游戏")
arg := []string{strGameName, strIPandPort}
fmt.Println("------------", arg)
strPath := getCurrentPath()
strPath = strPath + "\\TSTX\\" + strGameName // 路径
cmd := exec.Command(strPath, arg...)
if err := cmd.Run(); err != nil {
fmt.Println("Error: ", err)
return
}
return
}
// 获取当前目录
func getCurrentPath() string {
s, _ := exec.LookPath(os.Args[0])
i := strings.LastIndex(s, "\\")
path := string(s[0 : i+1])
PathData = path
return path
}
~~~
最后总结,技术是一把双刃剑,一定要用到对人类有意义的方面
![](https://box.kancloud.cn/032176b8778dbc41f1ce6b79a83d59c1_900x350.jpg)
- Go语言基础篇
- Go语言简介
- Go语言教程
- Go语言环境安装
- Go语言结构
- Go语言基础语法
- Go语言数据类型
- Go语言变量
- Go语言提高篇
- Go语言实现贪吃蛇
- Go 谚语
- 解决连通性问题的四种算法
- golang 几种字符串的连接方式
- Go JSON 技巧
- Go += 包版本
- Golang 编译成 DLL 文件
- Go指南:牛顿法开方
- Go语言异步服务器框架原理和实现
- Golang适合高并发场景的原因分析
- 如何设计并实现一个线程安全的 Map ?(上篇)
- go语言执行cmd命令关机、重启等
- IT杂项
- IT 工程师的自我管理
- IT界不为人知的14个狗血故事
- Go语言版本说明
- Go 1.10中值得关注的几个变化
- Golang面试题解析
- Golang面试题
- Golang语言web开发
- golang 模板(template)的常用基本语法
- go语言快速入门:template模板
- Go Template学习笔记
- LollipopGo框架
- 框架简介
- Golang语言版本设计模式
- 设计模式-单例模式
- Golang语言资源下载
- 公众账号
- leaf
- 合作讲师
- 公开课目录