-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopen_file.go
86 lines (74 loc) · 2.06 KB
/
open_file.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
import (
"bufio"
"fmt"
"golang.org/x/sys/windows/registry"
"os"
"os/exec"
"strings"
)
func CreateOpenFile() {
var openName string
var openPath string
scanner := bufio.NewScanner(os.Stdin)
fmt.Println("请输入右键打开的名称")
if scanner.Scan() {
openName = scanner.Text()
}
fmt.Println("请输入打开程序的路径,后缀为.exe")
if scanner.Scan() {
openPath = scanner.Text()
openPath = strings.TrimSpace(openPath)
}
registryName := extractFileName(openPath)
showPath := fmt.Sprintf(`*\shell\%s`, registryName)
commandPath := fmt.Sprintf(`*\shell\%s\command`, registryName)
openCommand := fmt.Sprintf(`"%s" "%%1"`, openPath)
//创建或打开注册表项
key, _, err := registry.CreateKey(registry.CLASSES_ROOT, showPath, registry.ALL_ACCESS)
if err != nil {
fmt.Println("无法创建或打开注册表项:", err)
return
}
defer key.Close()
// 设置注册表值
err = key.SetStringValue(Empty, openName)
if err != nil {
fmt.Println("无法设置注册表值:", err)
return
}
err = key.SetStringValue(Icon, openPath)
if err != nil {
fmt.Println("无法设置注册表值:", err)
return
}
key, _, err = registry.CreateKey(registry.CLASSES_ROOT, commandPath, registry.ALL_ACCESS)
if err != nil {
fmt.Println("无法创建或打开注册表项:", err)
return
}
err = key.SetStringValue(Empty, openCommand)
if err != nil {
fmt.Println("无法设置注册表值:", err)
return
}
fmt.Println("HKEY_CLASSES_ROOT\\" + showPath)
fmt.Println("注册表项添加成功!")
}
func DeleteOpenFile() {
fmt.Println("请输入打开程序的路径,后缀为.exe")
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
openPath := scanner.Text()
registryName := extractFileName(openPath)
showPath := fmt.Sprintf(`HKEY_CLASSES_ROOT\*\shell\%s`, registryName)
fmt.Println(showPath)
//删除注册表项
cmd := exec.Command("cmd", "/c", "reg", "delete", showPath, "/f")
err := cmd.Run()
if err != nil {
fmt.Println("注册表项删除失败:", err)
return
}
fmt.Println("注册表项删除成功!")
}