windows的checklist,自行编译exe文件

package main

import (
	"fmt"
	"github.com/axgle/mahonia"
	"golang.org/x/sys/windows/registry"
	"io/ioutil"
	"os"
	"os/exec"
	"os/user"
	"runtime"
	"strings"
	"syscall"
)

// 修改脚本前熟悉所有命令函数,切勿对系统造成影响,创建的东西要记得删除

// SecEdit.exe /export /cfg C:\\systeminfo.txt 獲取系統策略信息

//获取软件安装列表
// X64
// dir Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall -Name
// X86
// dir Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ -Name

func gopro()  {

	fmt.Println("************************************读取系统配置中*******************************")
	// 生產系統配置文件
	Getsystemset()
	// 读取系统文件
	systemsetconfig := readsystemset()
	fmt.Println()

	fmt.Println("************************************输出系统信息*********************************")
	// 获取系统信息
	Getsystem()
	// 获取系统的架构
	Getsystemframework()
	// 获取系统的内核版本
	Getsystemversion()

	fmt.Println("************************************获取用户信息*********************************")
	// 获取系统用户
	Getsystemuserdata()
	// 获取当前用户信息
	Getcurrentuserinfo()
	// 获取系统默认账户
	Getsystemdefaultuser(systemsetconfig)
	// 获取administrator组用户20201125
	getAdmingroupuser()

	fmt.Println("************************************获取端口信息*********************************")
	// 打印系统端口数据
	Getsystemport()


	fmt.Println("************************************打印系统密码策略******************************")
	// 获取密码策略
	Getsystempwdpolicy(systemsetconfig)
	// 密码过期提醒
	passwd_Expired(systemsetconfig)

	fmt.Println("***********************************获取系统安全审计策略****************************")
	// 获取系统安全策略
	Getsystemaudit(systemsetconfig)
	// eventlog服务状态
	getEventlogstat()

	fmt.Println("*************************************智能卡选项**********************************")
	// 智能卡移除操作
	smart_card_remove(systemsetconfig)
	// 交互式登录是否需要智能卡
	smart_card_login(systemsetconfig)

	fmt.Println("************************************获取系统共享目录******************************")
	// 查看共享
	net_share()

	fmt.Println("************************************获取系统屏保状态******************************")
	// 查看是否看起屏保
	getScreenSaver()

	fmt.Println("************************************系统自动播放功能******************************")
	// 系统媒体和设备自动播放功能
	sysmediaauto()

	fmt.Println("************************************系统SAM访问设置******************************")
	// 网络访问SAM访问设置数据
	GetSystemSAMcontrol()

	fmt.Println("************************************系统进程输出*********************************")
	// 進程輸出
	getSystemtasklist()

	fmt.Println("************************************系统服务输出*********************************")
	// 获取服务器当前运行服务
	getCurrentservice()

	fmt.Println("************************************系统安装软件*********************************")
	// 	获取系统安装的软件
	getSystemapp()

	fmt.Println("************************************查看安装补丁********************************")
	// 获取系统当前安装补丁
	getSystemhotfix()

	// 收尾工作
	Delfile()

}



// 功能啓動模塊
func main()  {
	var commnd string

	gopro()

	// 杜绝直接关闭
	fmt.Println("点击回车键退出脚本")
	fmt.Scanf("%s", &commnd)
}


//获取系统administrator组的用户
func getAdmingroupuser() string {
	output, err := exec.Command("cmd", "/C", "net", "localgroup", "administrators").Output()
	if err != nil {
		fmt.Println("查看administrators组用户命令执行不成功,请尝试手工自行判断")
		return ""
	}
	outputdata := ConvertToString(string(output), "GBK", "UTF-8")
	outputdata = str_check(outputdata)
	lastdata := strings.Split(outputdata, " ")
	fmt.Println("当前系统administrators组中存在的用户如下")
	for i:=6; i<len(lastdata)-1; i++{
		fmt.Println(lastdata[i])
	}
	//fmt.Println(lastdata)
	//result := lastdata[4:len(lastdata)-1]
	//fmt.Println(outputdata)
	return ""
}

// 获取系统安装的app
func getSystemapp() string {

	i := 0
	fmt.Println("本机安装软件如下:")

	// 路径记录
	X64output, X64err := exec.Command("powershell", "/C", "dir", "Registry::HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", "-Name").Output()
	X86output, X86err := exec.Command("powershell", "/C", "dir", "Registry::HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", "-Name").Output()
	if X64err != nil{
		//fmt.Println(X64err)
		fmt.Println("读取64位系统注册表不成功,表现为读取64位软件")
		return ""
	}
	if X86err != nil{
		fmt.Println("读取64位系统注册表不成功,表现为读取32位软件")
		return ""
	}
	X64outputdata := strings.TrimSpace(ConvertToString(string(X64output), "GBK", "UTF-8"))
	X86outputdata := strings.TrimSpace(ConvertToString(string(X86output), "GBK", "UTF-8"))
	lastX64 := strings.Split(X64outputdata, "\n")
	lastX86 := strings.Split(X86outputdata,"\n")
	for X64d:=0; X64d<len(lastX64); X64d++{
		i++
		if strings.Contains(lastX64[X64d], "{"){
			x64path := "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"+strings.TrimSpace(lastX64[X64d])
			//fmt.Printf("%T", x64path)
			ke_va, err := registry.OpenKey(registry.LOCAL_MACHINE, x64path, registry.QUERY_VALUE)
			if err != nil{
				return ""
			}
			defer ke_va.Close()
			Displayname, _, err := ke_va.GetStringValue("DisplayName")
			if err != nil{
				return ""
			}
			fmt.Println("[", i, "]", Displayname)
		}else {
			fmt.Println("[", i, "]", lastX64[X64d])
		}
		//fmt.Println(lastX64[X64d])
	}
	for X86d:=0; X86d<len(lastX86); X86d++{
		i++
		if strings.Contains(lastX86[X86d], "{"){
			x86path := "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"+strings.TrimSpace(lastX86[X86d])
			ke_va, err := registry.OpenKey(registry.LOCAL_MACHINE, x86path, registry.QUERY_VALUE)

			if err != nil{
				return ""
			}
			defer ke_va.Close()
			Displayname, _, err := ke_va.GetStringValue("DisplayName")
			if err != nil{
				//fmt.Println(Displayname)
				return ""
			}
			fmt.Println("[", i, "]", Displayname)
		}else {
			fmt.Println("[", i, "]", lastX86[X86d])
		}
		//fmt.Println(lastX86[X86d])
	}
	//fmt.Println(X64outputdata)
	//fmt.Println(X86outputdata)
	return ""
}

// 获取系统当权运行服务
func getCurrentservice() string {
	output, err := exec.Command("cmd", "/C", "net", "start").Output()
	if err != nil {
		return ""
	}
	outputdata := strings.TrimSpace(ConvertToString(string(output), "GBK", "UTF-8"))
	lastdata := strings.Split(outputdata, "\n")
	lastdata = lastdata[2:len(lastdata)-2]
	fmt.Println("Windows当前已启动以下服务:")
	for i:=0; i<len(lastdata); i++ {
		fmt.Println(strings.TrimSpace(lastdata[i]))
	}
	//fmt.Print(outputdata)
	return ""
}

// 获取系统安装补丁
func getSystemhotfix() string {
	output, err := exec.Command("cmd", "/C", "wmic", "qfe", "GET", "hotfixid").Output()
	if err != nil {
		return ""
	}
	outputdata := ConvertToString(string(output), "GBK", "UTF-8")
	lastdata := strings.TrimSpace(strings.Split(outputdata, "HotFixID")[1])
	fmt.Println("系统安装的补丁如下:")
	fmt.Print(lastdata)
	fmt.Println()
	return ""
}

// 获取系统进程列表
func getSystemtasklist() string {
	output, _ := exec.Command("cmd", "/C", "tasklist").Output()
	outputdata := ConvertToString(string(output), "GBK", "UTF-8")
	fmt.Print("进程表查看")
	fmt.Printf(outputdata)
	return ""
}

// 获取系统eventlog服务状态
func getEventlogstat() string {
	ke_va, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\CurrentControlSet\Services\EventLog`, registry.QUERY_VALUE)
	if err != nil {
		return ""
	}
	defer ke_va.Close()

	start, _, err := ke_va.GetIntegerValue("start")
	if start == 4 {
		fmt.Println("Event log启动类型已禁用")
	}else if start == 3 {
		fmt.Println("Event log启动类型为手动")
	}else if start == 2 {
		fmt.Println("Event log启动类型为自动")
	}else if start == 1 {
		fmt.Println("Event log启动类型为自动(延迟启动)")
	}
	return ""
}


// 获取系统网络访问SAM设置
func GetSystemSAMcontrol() string  {
	ke_va, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\CurrentControlSet\Control\LSA`, registry.QUERY_VALUE)
	if err != nil{
		return ""
	}
	defer ke_va.Close()
	// 不允许SAM账户的匿名枚举
	restrictanonymoussam, _, err := ke_va.GetIntegerValue("restrictanonymoussam")
	// 不允许SAM账户和共享的匿名枚举
	restrictanonymous, _, err := ke_va.GetIntegerValue("restrictanonymous")

	if restrictanonymoussam == 1{
		fmt.Println("不允许SAM账户的匿名枚举功能已开启")
	}else if restrictanonymoussam == 0{
		fmt.Println("不允许SAM账户的匿名枚举功能已禁用")
	}

	if restrictanonymous == 1{
		fmt.Println("不允许SAM账户和共享的匿名枚举功能已开启")
	}else if restrictanonymous == 0{
		fmt.Println("不允许SAM账户和共享的匿名枚举功能已禁用")
	}

	//fmt.Println(restrictanonymoussam)
	return ""
}

// 系统媒体和设备自动播放功能
func sysmediaauto() string {
	ke_va, err := registry.OpenKey(registry.LOCAL_MACHINE, `SYSTEM\CurrentControlSet\Services\cdrom`, registry.QUERY_VALUE)
	if err != nil{
		return ""
	}
	defer ke_va.Close()
	//key, _, err := ke_va.GetStringValue("AutoRun")
	key, _, err := ke_va.GetIntegerValue("AutoRun")
	if err != nil{
		return ""
	}
	if key == 1 {
		fmt.Println("系统媒体和设备自动播放功能已开启")
	}else if key == 0 {
		fmt.Println("系统媒体和设备自动播放功能已关闭")
	}
	//fmt.Println(key)
	return ""
}

// 查看系统是否开启共享
func net_share() string {
	data, _ := exec.Command("cmd", "/C", "net", "share").Output()
	outputdata := ConvertToString(string(data), "GBK", "UTF-8")
	//fmt.Println(outputdata)
	//outputdata = str_check(outputdata)
	fmt.Println(outputdata)
	//lastdata := strings.Split(outputdata, " ")
	//result := lastdata[4:len(lastdata)-1]
	//fmt.Println("共享名\t\t资源\t\t注解")
	//for i:=0; i<len(result); i++{
	//	fmt.Printf("%s\t\t", result[i])
	//	if i%3 == 2 && i != 0{
	//		fmt.Println()
	//	}
	//	if i%3 == 0 && strings.Contains(result[i], "IPC"){
	//		result[i+1] = ""
	//		result[i+2] = "远程IPC"
	//	}
	//}
	return ""
}

// 交互式登录是否需要智能卡
func smart_card_login(policy string) string {
	smart_card := strings.TrimSpace(strings.Split(strings.Split(strings.Split(policy, "ScForceOption")[1], "MACHINE")[0], ",")[1])
	//fmt.Println(smart_card)
	if smart_card == "0" {
		fmt.Println("用户无需使用智能卡就可以登录系统")
	}else if smart_card == "1" {
		fmt.Println("用户需要使用智能卡才能登录系统")
	}
	return ""
}

// 智能卡移除操作
func smart_card_remove(policy string) string {
	smart_cart := strings.Split(strings.Split(policy, "ScRemoveOption")[1], "\"")[1]
	if smart_cart == "0"{
		fmt.Println("当智能卡移除时,系统无任何操作")
	}else if smart_cart == "1" {
		fmt.Println("当智能卡移除时,系统锁定工作站")
	}else if smart_cart == "2" {
		fmt.Println("当智能卡移除时,系统强制注销")
	}
	return ""
}

// 密码过期提醒
func passwd_Expired(policy string) string {
	passauit := strings.Split(strings.Split(policy, "[Privilege Rights]")[0], "[Registry Values]")[1]
	//fmt.Printf("%s", passauit)
	getNum := strings.TrimSpace(strings.Split(strings.Split(strings.Split(passauit, "PasswordExpiryWarning")[1], "MACHINE")[0], ",")[1])
	fmt.Println("系统密码过期前" + getNum + "天系统会有相应的过期提醒")
	return ""
}

// 收尾工作
func Delfile() string {
	err := os.Remove("C:\\systemset.txt")
	if err != nil{
		return ""
	}
	return ""
}

// 获取系统安全审计策略
func Getsystemaudit( policy string) string {
	Winaudit := strings.Split(strings.Split(policy, "[Registry Values]")[0], "[Event Audit]")[1]
	// 未开启状态
	Winaudit = strings.Replace(Winaudit, "AuditSystemEvents = 0", "审核系统事件功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditLogonEvents = 0", "审核登录事件功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditObjectAccess = 0", "审核对象访问功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPrivilegeUse = 0", "审核特权使用功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPolicyChange = 0", "审核策略更改功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountManage = 0", "审核账户管理功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditProcessTracking = 0", "审核进程追踪功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditDSAccess = 0", "审核目录服务访问功能未开启", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountLogon = 0", "审核账户登录事件功能未开启", 1)

	// 仅记录成功事件日志
	Winaudit = strings.Replace(Winaudit, "AuditSystemEvents = 1", "审核系统事件功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditLogonEvents = 1", "审核登录事件功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditObjectAccess = 1", "审核对象访问功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPrivilegeUse = 1", "审核特权使用功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPolicyChange = 1", "审核策略更改功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountManage = 1", "审核账户管理功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditProcessTracking = 1", "审核进程追踪功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditDSAccess = 1", "审核目录服务访问功能 成功", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountLogon = 1", "审核账户登录事件功能 成功", 1)

	// 仅记录失败事件日志
	Winaudit = strings.Replace(Winaudit, "AuditSystemEvents = 2", "审核系统事件功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditLogonEvents = 2", "审核登录事件功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditObjectAccess = 2", "审核对象访问功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPrivilegeUse = 2", "审核特权使用功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPolicyChange = 2", "审核策略更改功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountManage = 2", "审核账户管理功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditProcessTracking = 2", "审核进程追踪功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditDSAccess = 2", "审核目录服务访问功能 失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountLogon = 2", "审核账户登录事件功能 失败", 1)

	// 记录成功、失败事件日志
	Winaudit = strings.Replace(Winaudit, "AuditSystemEvents = 3", "审核系统事件功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditLogonEvents = 3", "审核登录事件功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditObjectAccess = 3", "审核对象访问功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPrivilegeUse = 3", "审核特权使用功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditPolicyChange = 3", "审核策略更改功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountManage = 3", "审核账户管理功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditProcessTracking = 3", "审核进程追踪功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditDSAccess = 3", "审核目录服务访问功能 成功、失败", 1)
	Winaudit = strings.Replace(Winaudit, "AuditAccountLogon = 3", "审核账户登录事件功 成功、失败", 1)

	fmt.Print(Winaudit)
	return ""
}

// 获取系统administrator,guest账户状态
func Getsystemdefaultuser(policy string) string{
	Windefault := strings.Split(strings.Split(strings.Split(policy, "[Event Audit]")[0], "[System Access]")[1], "LSAAnonymousNameLookup = 0")[1]
	Windefault = strings.Replace(Windefault, "EnableAdminAccount = 0", "administrator账户未开启", 1)
	Windefault = strings.Replace(Windefault, "EnableAdminAccount = 1", "administrator账户已开启", 1)
	Windefault = strings.Replace(Windefault, "EnableGuestAccount = 0", "Guest账户未开启", 1)
	Windefault = strings.Replace(Windefault, "EnableGuestAccount = 1", "Guest账户已开启", 1)
	fmt.Print(Windefault)
	return ""
}

// 获取系统密码策略
//MinimumPasswordAge = 0  //密码最短留存期
//MaximumPasswordAge = 42 //密码最长留存期
//MinimumPasswordLength = 0   //密码长度最小值
//PasswordComplexity = 0  //密码必须符合复杂性要求
//PasswordHistorySize = 0 //强制密码历史 N个记住的密码
//LockoutBadCount = 5 //账户锁定阈值
//ResetLockoutCount = 30  //账户锁定时间
//LockoutDuration = 30    //复位账户锁定计数器
//RequireLogonToChangePassword = 0 *下次登录必须更改密码
//ForceLogoffWhenHourExpire = 0   *强制过期
func Getsystempwdpolicy(policy string) string {
	pwdpolicy := strings.Split(strings.Split(strings.Split(policy, "[Event Audit]")[0], "[System Access]")[1], "NewAdministratorName")[0]
	//fmt.Printf("%s", pwdpolicy)
	pwdpolicy = strings.Replace(pwdpolicy, "MinimumPasswordAge =", "密码最短留存期为", 1)
	pwdpolicy = strings.Replace(pwdpolicy, "MaximumPasswordAge =", "密码最长留存期为", 1)
	pwdpolicy = strings.Replace(pwdpolicy, "MinimumPasswordLength =", "密码长度最小值为",1)
	pwdpolicy = strings.Replace(pwdpolicy, "PasswordComplexity = 0", "密码复杂度检验功能未开启",1)
	pwdpolicy = strings.Replace(pwdpolicy, "PasswordComplexity = 1", "密码复杂度检验功能已开启",1)
	pwdpolicy = strings.Replace(pwdpolicy, "PasswordHistorySize =", "强制密码历史记住的数量为",1)
	pwdpolicy = strings.Replace(pwdpolicy, "LockoutBadCount =", "账户锁定阈值为",1)
	pwdpolicy = strings.Replace(pwdpolicy, "ResetLockoutCount =", "账户锁定时间",1)
	pwdpolicy = strings.Replace(pwdpolicy, "LockoutDuration =", "复位账户锁定计数器",1)
	pwdpolicy = strings.Replace(pwdpolicy, "RequireLogonToChangePassword = 0", "下次登录必须更改密码功能未开启",1)
	pwdpolicy = strings.Replace(pwdpolicy, "RequireLogonToChangePassword = 1", "下次登录必须更改密码功能已开启",1)
	pwdpolicy = strings.Replace(pwdpolicy, "ForceLogoffWhenHourExpire = 0", "密码强制过期功能未开启",1)
	pwdpolicy = strings.Replace(pwdpolicy, "ForceLogoffWhenHourExpire = 1", "密码强制过期功能已开启",1)
	fmt.Println(pwdpolicy)
	return ""
}

// 讀取系統配置文件
func readsystemset() string {
	filedata, err := ioutil.ReadFile("C:\\systemset.txt")
	if err != nil{
		fmt.Println("系统配置文件读取不成功")
		return ""
	}
	filestr := string(filedata)
	//fmt.Printf("%T", filestr)
	// windows中的空格可能不是空格,哈哈哈哈
	fileres := strings.Replace(filestr, "\x00", "", -1)
	return fileres
}

// 生成配置文件在C盤目錄下
func Getsystemset() {
	data := exec.Command("cmd", "/C", "secedit", "/export", "/cfg", "C:\\systemset.txt")
	if err := data.Run(); err != nil {
		fmt.Println("Error: ", err)
	}else {
		fmt.Println("配置文件已生成")
	}
}

// 獲取當前用戶信息
func Getcurrentuserinfo() string {
	if userinfo, err := user.Current(); err == nil {
		fmt.Printf("用户姓名:%s\n", userinfo.Username)
		fmt.Printf("用户地址:%s\n", userinfo.HomeDir)
		//fmt.Printf("用户组:%s\n", userinfo.Name)
	}
	return ""
}

// 获取系统用户数据
func Getsystemuserdata() string  {
	output, _ := exec.Command("cmd", "/C", "net", "user").Output()
	outputdata := string(output)
	//fmt.Print(ConvertToString(outputdata, "GBK", "UTF-8"))
	outputdata = str_check(outputdata)
	//fmt.Print(outputdata)
	checkdata := strings.Split(outputdata, " ")
	checkdata = checkdata[3:len(checkdata)-1]
	fmt.Printf("共计%d个用户,分别是%s\n", len(checkdata), checkdata)
	//fmt.Print(checkdata)
	return ""
}

// 獲取系統TCP端口
func Getsystemport() string {
	output, _ := exec.Command("cmd", "/C", "netstat", "-ano").Output()
	outputdata := string(output)
	outputdata = str_check(outputdata)
	checkdata := strings.Split(outputdata, "UDP")[0]
	TCPdata := strings.Split(checkdata, "TCP")[1:]
	fmt.Print(set_string_len("本地地址"))
	fmt.Print(set_string_len("外部地址")+ "\n")
	for i:=0; i<len(TCPdata); i++{
		localip_port := strings.Split(string(TCPdata[i]), " ")[1]
		foregin_port := strings.Split(string(TCPdata[i]), " ")[2]
		localip_port = set_string_len(localip_port)
		fmt.Print(localip_port, "\t\t\t", foregin_port)
		//fmt.Print(len(localip_port))
		fmt.Print("\n")
	}

	return ""
}

// 获取当前系统
func Getsystem() string {
	system := runtime.GOOS
	fmt.Printf("当前系统:%s\n", system)
	return ""
}

// 获取系统架构
func Getsystemframework() string {
	systemframework := runtime.GOARCH
	fmt.Printf("当前系统架构:%s\n", systemframework)
	return ""
}

//获取当前系统版本
func Getsystemversion() string {
	version, err := syscall.GetVersion()
	if err != nil {
		return ""
	}
	fmt.Printf("当前系统版本:%d.%d (%d)\n", byte(version), uint8(version>>8), version>>16 )
	return ""
}

// string字符串的空格处理
func str_check(str string) string{
	var re_str string
	re_str = strings.Join(strings.Fields(str), " ")
	return string(re_str)
}

// 控制字符串长度
func set_string_len(str string) string{
	for {
		if len(str) < 18{
			str = str + " "
		}else if len(str) >= 18{
			break
		}
	}
	return str
}

// 字符串转换UTF-8 模式
func ConvertToString(src string, srcCode string, tagCode string) string {
	srcCoder := mahonia.NewDecoder(srcCode)
	srcResult := srcCoder.ConvertString(src)
	tagCoder := mahonia.NewDecoder(tagCode)
	_, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
	result := string(cdata)
	return result
}

// 获取屏幕保护状态
func getScreenSaver() string {
	//fmt.Println("ls")
	ke_va, err := registry.OpenKey(registry.CURRENT_USER, `Control Panel\Desktop`, registry.QUERY_VALUE)
	if err != nil{
		fmt.Println("屏幕保护未开启")
		return ""
	}
	defer ke_va.Close()
	//screensaveactive, _, err := ke_va.GetStringValue("ScreenSaveActive")
	screensaverissecure, _, err := ke_va.GetStringValue("ScreenSaverIsSecure")
	screensavetimeout, _, err := ke_va.GetStringValue("ScreenSaveTimeOut")
	if err != nil{
		fmt.Println("数据采集异常,屏幕保护未开启")
		return ""
	}

	if screensaverissecure == "1" {
		fmt.Println("屏幕保护程序已勾选“在恢复时显示登录屏幕”")
	}else if screensaverissecure == "0" {
		fmt.Println("屏幕保护程序未勾选“在恢复时显示登录屏幕”")
		fmt.Println("屏幕保护超时时间为", screensavetimeout, "秒")
	}

	//fmt.Println(key)
	//if screensaveactive == "1" && screensaverissecure == "1"{
	//	fmt.Println("屏幕保护已开启")
	//	fmt.Println("屏幕保护超时时间为", screensavetimeout, "秒" )
	//}else if screensaveactive == "0" && screensaverissecure == "1"{
	//	fmt.Println("屏幕保护已开启")
	//	fmt.Println("屏幕保护超时时间为", screensavetimeout, "秒" )
	//}else if screensaveactive == "1" && screensaverissecure == "0"{
	//	fmt.Println("建议使用手工判断")
	//	fmt.Println("如果屏保开启,屏幕保护超时时间为", screensavetimeout, "秒" )
	//}else if screensaveactive == "0" && screensaverissecure == "0"{
	//	fmt.Println("屏幕保护未开启")
	//}
	return ""
}

  运行截图:

 

 

 

多给我点个赞呗

 

posted @ 2021-07-20 11:22  mf95  阅读(106)  评论(0编辑  收藏  举报