火绒要怎么定义规则保护文件夹,自定义的防护规则失效

2022-09-02 18:16:29 +08:00
 ColoThor

创建了一个火绒自定义防护规则,保护文件夹,但是未生效,folder-reader.exe 是自己用 go 写的,另外测试了保护单文件是可以的

完整代码:

package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
	"os/signal"
	"runtime"
	"strings"
	"syscall"
)

/**
 * 读入输入
 */
func readPrint() (bool, string) {
	fmt.Println("input file path:")

	inputReader := bufio.NewReader(os.Stdin)
	input, err := inputReader.ReadString('\n')
	if err != nil {
		errInfo := fmt.Sprintf("read input error: \n%s\n", err.Error())
		fmt.Printf(errInfo)
		return false, ""
	}
	input = strings.ReplaceAll(input, "\r", "")
	input = strings.ReplaceAll(input, "\n", "")
	return true, input
}

/**
 * 读取文件
 */
func fileRead(path string) {
	exists, err := pathExists(path)
	if err != nil {
		errInfo := fmt.Sprintf("path check error: \n%s\n", err.Error())
		fmt.Printf(errInfo)
		return
	}

	if !exists {
		errInfo := fmt.Sprintf("path not exists: \n%s\n", path)
		fmt.Printf(errInfo)
		return
	}

	if !isFile(path) {
		errInfo := fmt.Sprintf("path is folder : \n%s\n", path)
		fmt.Printf(errInfo)
		return
	}

	file, err := os.Open(path)
	if err != nil {
		errInfo := fmt.Sprintf("fild open error: \n%s\n", err.Error())
		fmt.Printf(errInfo)
		return
	}

	content, err := ioutil.ReadAll(file)
	if err != nil {
		errInfo := fmt.Sprintf("fild read error: \n%s\n", err.Error())
		fmt.Printf(errInfo)
		return
	}
	outInfo := fmt.Sprintf("fild content: \n%s\n", content)
	fmt.Printf(outInfo)
}

/**
 * 判断所给路径文件 /文件夹是否存在
 */
func pathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}

	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}

/**
 * 判断所给路径是否为文件夹
 */
func isDir(path string) bool {
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()
}

/**
 * 判断所给路径是否为文件
 */
func isFile(path string) bool {
	return !isDir(path)
}

func main() {
	succeed, input := readPrint()
	if succeed {
		fileRead(input)
	}

	if runtime.GOOS == "windows" {
		//pause
		fmt.Println("system(pause)")
		quit := make(chan os.Signal)
		signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
		sig := <-quit
		for {
			if sig.String() == "interrupt" {
				break
			}
		}
	}
}

689 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX