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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序

XB 软件公司最近发布了JavaScript UI 库Webix ,其中包含的组件超过45个,用这些组件可以构建跟HTML5 和 CSS3 兼容的程序,这些程序...

2026
来自专栏我就是马云飞

ViewGroup源码解读

我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析。这次我们来分析下viewgroup...

1878
来自专栏刘望舒

Android解析WindowManager(二)Window的属性

前言 在上一篇文章我们学习了WindowManager体系,了解了Window和WindowManager之间的关系,这一篇我们接着来学习Window的属性。 ...

2198
来自专栏郭霖

Android Volley完全解析(二),使用Volley加载网络图片

在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建...

2466
来自专栏张高兴的博客

张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”

3224
来自专栏静默虚空的博客

Eclipse 使用小结

代码智能提示 Java智能提示 Window -> Preferences -> Java -> Editor -> Content Assist -> Aut...

2176
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native0.50+开发指导

概要 本文主要对React Native 0.50的关键性的更新做个讲解和开发适配指导,希望能对从事React Native开发的你有所帮助: 在兼容性方面新增...

2684
来自专栏游戏杂谈

as3加载外部资源

在as3的开发中,经常会加载外部共用资源,比如某一个公用的图片或者其它小特效。这时候为了避免重复请求,一般会将这些资源放在一个fla文件中,为每一个资源添加链接...

784
来自专栏分享达人秀

很多人不知道还有这个——搜索框组件SearchView

一、SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输入完成后提交搜索时...

20110
来自专栏何俊林

插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑

在了解系统的activity,service,broadcastReceiver的启动过程后,今天将分析下360 DroidPlugin是如何预注册占坑的?本篇...

1957

扫码关注云+社区