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
}

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

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

如有侵权,请联系 zhuanlan_guanli@qq.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hrscy

iOS 百度地图 Demo

3.iOS 9 之后不能直接使用 HTTP 进行请求,需要在 Info.plist 新增一段用于控制 ATS 的配置:

381
来自专栏九彩拼盘的叨叨叨

HTML代码片段

672
来自专栏编程之旅

PHP开发——yii2多图上传组件的使用

最近在使用yii2开发一个表单页面的时候,有多图上传的需求,稍微找了找这方面的组件,基本都安利fileInput这个组件,于是就尝试着使用这个库来完成后端表单页...

651
来自专栏张戈的专栏

[持续更新]批处理全盘搜索系列案例

虽然现在全盘搜索相关的实用软件很多也很强大,但是在手头上无法下载的时候,批处理这个"资深前辈"又得派上用场了,接下来介绍的代码均为全盘范围的批处理: ---- ...

3324
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者

前言: 一、阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二、借助微信公众平台SDK Sen...

1806
来自专栏技术之路

将某个Qt4项目升级到Qt5遇到的问题[转]

该Qt4项目以前是使用Qt4.7.4 MSVC2008开发的,因为使用到了OWC10(Office Web Components),使用MSVC编译器的话无法正...

1699
来自专栏linux系统运维

Apache用户认证,域名跳转,Apache访问日志

1435
来自专栏魏艾斯博客www.vpsss.net

windows VPS 中 wordpress 伪静态规则

864
来自专栏施炯的IoT开发专栏

【OneNote Mobile】 如何处理便签内容的格式?

利用Windows Phone 7手机的OneNote Mobile,用户可以随时以文字、图片或者录音来记录灵感,并通过Windows Live SkyDriv...

2787
来自专栏小巫技术博客

Bugly升级SDK适配Android N

762

扫描关注云+社区