对于程序员来说,新建一个cpp文件是再频繁不过的事情了。
为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名。
百度谷歌查询了一下,终于知道如何添加注册表。
手痒,抽出时间用cpp写了一个程序,方便以后操作。
客户需求是永远无法满足的,经同学测试,陆续写了三个版本。
接下来直接贴代码~
第一个版本,只能添加c、cpp、java三种后缀。
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
|
/* * Author: Haipz * School: HDU * File Name: registry1.0.cpp */ #include <cstdio> #include <cmath> #include <ctime> #include <cctype> #include <cstring> #include <cstdlib> #include <climits> #include <cfloat> #include <iostream> #include <vector> #include <stack> #include <queue> #include <set> #include <map> #include <algorithm> using namespace std; char s[1024], buffer[128], result[1024*4]; void work_1() { system ( "reg add \"HKEY_CLASSES_ROOT\\.c\\ShellNew\" /v \"NullFile\" /t REG_SZ" ); } void work_2() { system ( "reg add \"HKEY_CLASSES_ROOT\\.cpp\\ShellNew\" /v \"NullFile\" /t REG_SZ" ); } void work_3() { system ( "reg add \"HKEY_CLASSES_ROOT\\.java\\ShellNew\" /v \"NullFile\" /t REG_SZ" ); } int main() { printf ( "Author: Haipz\nSchool: HDU\n" ); printf ( "1 for C;\n2 for C++;\n3 for Java.\n" ); printf ( "Example: 12 to add C and C++.\n" ); printf ( "Please make choice(s): " ); gets (s); for ( int i = 0; s[i] != '\0' ; ++i) { printf ( "Working...\n" ); if (s[i] == '1' ) work_1(); else if (s[i] == '2' ) work_2(); else if (s[i] == '3' ) work_3(); else printf ( "%c is a wrong enter!\n" , s[i]); } system ( "pause" ); return 0; } |
第二个版本,精简了代码,支持添加用户输入的后缀。
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
|
/* * Author: Haipz * School: HDU * File Name: registry2.0.cpp */ #include <cstdio> #include <cmath> #include <ctime> #include <cctype> #include <cstring> #include <cstdlib> #include <climits> #include <cfloat> #include <iostream> #include <vector> #include <stack> #include <queue> #include <set> #include <map> #include <algorithm> using namespace std; char a[1024]; char b[1024] = "reg add \"HKEY_CLASSES_ROOT\\." ; char c[1024] = "\\ShellNew\" /v \"NullFile\" /t REG_SZ" ; void work( char * a) { strcat (b, a); strcat (b, c); system (b); } int main() { printf ( "Function: Add registry to build a new file simply!\n" ); printf ( "Author: Haipz\nSchool: HDU\n" ); printf ( "Example: Enter c to add C and enter cpp to add C++.\n" ); printf ( "Your opion: " ); gets (a); work(a); system ( "pause" ); return 0; } |
第三个版本,支持多次添加,并允许删除已添加的注册表。
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
|
/* * Author: Haipz * School: HDU * File Name: registry2.0.cpp */ #include <cstdio> #include <cmath> #include <ctime> #include <cctype> #include <cstring> #include <cstdlib> #include <climits> #include <cfloat> #include <iostream> #include <vector> #include <stack> #include <queue> #include <set> #include <map> #include <algorithm> using namespace std; char key[1024]; char a[1024]; void add( char * t) { char b[1024] = "reg add \"HKEY_CLASSES_ROOT\\." ; char c[1024] = "\\ShellNew\" /v \"NullFile\" /t REG_SZ" ; strcat (b, t); strcat (b, c); system (b); } void del( char * t) { char d[1024] = "reg delete \"HKEY_CLASSES_ROOT\\." ; char e[1024] = "\\ShellNew\" /f" ; strcat (d, t); strcat (d, e); system (d); } int main() { printf ( "Function: Build a new file simply!\n" ); printf ( "Author: Haipz\nSchool: HDU\n" ); printf ( "Example: Enter \"c\" to add C and enter \"cpp\" to add C++;\n" ); printf ( " Enter \"-c\" to delete C.\n" ); do { printf ( "Your opion: " ); gets (a); if (a[0] == '-' ) del(a + 1); else add(a); printf ( "Enter \"r\" to run again or any other key to quit: " ); gets (key); } while (key[0] == 'r' ); return 0; } |
打包下载地址:
注意,如果系统提示缺少某dll文件,请到网上下载,并复制到C:\Windows\System32目录下。