Golang语言社区--go语言执行cmd命令关机、重启等

大家好,我是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
}

最后总结,技术是一把双刃剑,一定要用到对人类有意义的方面

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

合格前端之打造一个属于自己的 UI 库

摘要: 轮子总得造上一造~ 一、项目介绍 vui : 一个私人的vue ui 组件库(移动端为主) 文档官网:https://brickies.github.i...

2318
来自专栏林冠宏的技术文章

android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

目录:   1,过程感慨;   2,运行环境;   3,准备工作;   4,编译 .so   5,遇到的关键问题及其解决方法   6,实现效果截图。 (原创:转...

7915
来自专栏Golang语言社区

转--quick-cocos做客户端,golang做服务端,实现HTTP通信

客户端quick-cocos程序如下: local info={hero={ heroname="zhanshen",herolevel=1,heroh...

3176
来自专栏张善友的专栏

IBatisNet配置

结合上面示例中的IbatisNet配置文件,下面对配置文件中各节点的说明: <?xml version="1.0" encoding="utf-8"?> <s...

1717
来自专栏blackheart的专栏

MSBuild入门

MSBuild是什么? MSBuild全称(Microsoft Build Engine),是用于构建应用程序的平台。您可能不知道它,但是如果您在使用VS做开发...

2048
来自专栏恰同学骚年

自己动手写三层代码生成器学习总结

  今天看了下老杨的视频教程,写了一把三层代码生成器,理解了一下简单的代码生成器是如何实现的,其重点就在于数据库系统视图。

534
来自专栏walterlv - 吕毅的博客

WPF 应用完全模拟 UWP 的标题栏按钮

发布于 2018-08-04 09:35 更新于 2018-08...

462
来自专栏GopherCoder

『Go 语言学习专栏』-- 第六期

1244
来自专栏张善友的专栏

ObservableCollection 类

Windows Presentation Foundation (WPF) 在 Microsoft .NET Framework 中添加了一些功能,您可以可靠地...

1776
来自专栏地方网络工作室的专栏

FireFox 火狐浏览器57以上版本linux下隐藏标题栏方法插件

FireFox 火狐浏览器57以上版本linux下隐藏标题栏方法插件 不知道火狐的开发团队咋想的,在 linux 下面始终有一个非常难看并且毫无用处的标题栏。当...

2259

扫码关注云+社区