• C++利用注册表添加桌面右键新建菜单


    对于程序员来说,新建一个cpp文件是再频繁不过的事情了。

    为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名。

    百度谷歌查询了一下,终于知道如何添加注册表。

    手痒,抽出时间用cpp写了一个程序,方便以后操作。

    客户需求是永远无法满足的,经同学测试,陆续写了三个版本。

    接下来直接贴代码~

    第一个版本,只能添加c、cpp、java三种后缀。

     1 /*
     2  * Author: Haipz
     3  * School: HDU
     4  * File Name: registry1.0.cpp
     5  */
     6 #include <cstdio>
     7 #include <cmath>
     8 #include <ctime>
     9 #include <cctype>
    10 #include <cstring>
    11 #include <cstdlib>
    12 #include <climits>
    13 #include <cfloat>
    14 #include <iostream>
    15 #include <vector>
    16 #include <stack>
    17 #include <queue>
    18 #include <set>
    19 #include <map>
    20 #include <algorithm>
    21 using namespace std;
    22 
    23 char s[1024], buffer[128], result[1024*4];
    24 
    25 void work_1() {
    26     system("reg add "HKEY_CLASSES_ROOT\.c\ShellNew" /v "NullFile" /t REG_SZ");
    27 }
    28 
    29 void work_2() {
    30     system("reg add "HKEY_CLASSES_ROOT\.cpp\ShellNew" /v "NullFile" /t REG_SZ");
    31 }
    32 
    33 void work_3() {
    34     system("reg add "HKEY_CLASSES_ROOT\.java\ShellNew" /v "NullFile" /t REG_SZ");
    35 }
    36 
    37 int main() {
    38     printf("Add registry for C, C++ and Java
    ");
    39     printf("Author: Haipz
    School: HDU
    ");
    40     printf("1 for C;
    2 for C++;
    3 for Java.
    ");
    41     printf("Example: 12 to add C and C++.
    ");
    42     printf("Please make choice(s): ");
    43     gets(s);
    44     for (int i = 0; s[i] != ''; ++i) {
    45         printf("Working...
    ");
    46         if (s[i] == '1') work_1();
    47         else if (s[i] == '2') work_2();
    48         else if (s[i] == '3') work_3();
    49         else printf("%c is a wrong enter!
    ", s[i]);
    50     }
    51     system("pause");
    52     return 0;
    53 }

    第二个版本,精简了代码,支持添加用户输入的后缀。

     1 /*
     2  * Author: Haipz
     3  * School: HDU
     4  * File Name: registry2.0.cpp
     5  */
     6 #include <cstdio>
     7 #include <cmath>
     8 #include <ctime>
     9 #include <cctype>
    10 #include <cstring>
    11 #include <cstdlib>
    12 #include <climits>
    13 #include <cfloat>
    14 #include <iostream>
    15 #include <vector>
    16 #include <stack>
    17 #include <queue>
    18 #include <set>
    19 #include <map>
    20 #include <algorithm>
    21 using namespace std;
    22 
    23 char a[1024];
    24 char b[1024] = "reg add "HKEY_CLASSES_ROOT\.";
    25 char c[1024] = "\ShellNew" /v "NullFile" /t REG_SZ";
    26 
    27 void work(char* a) {
    28     strcat(b, a);
    29     strcat(b, c);
    30     system(b);
    31 }
    32 
    33 int main() {
    34     printf("Function: Add registry to build a new file simply!
    ");
    35     printf("Author: Haipz
    School: HDU
    ");
    36     printf("Example: Enter c to add C and enter cpp to add C++.
    ");
    37     printf("Your opion: ");
    38     gets(a);
    39     work(a);
    40     system("pause");
    41     return 0;
    42 }

    第三个版本,支持多次添加,并允许删除已添加的注册表。

     1 /*
     2  * Author: Haipz
     3  * School: HDU
     4  * File Name: registry2.0.cpp
     5  */
     6 #include <cstdio>
     7 #include <cmath>
     8 #include <ctime>
     9 #include <cctype>
    10 #include <cstring>
    11 #include <cstdlib>
    12 #include <climits>
    13 #include <cfloat>
    14 #include <iostream>
    15 #include <vector>
    16 #include <stack>
    17 #include <queue>
    18 #include <set>
    19 #include <map>
    20 #include <algorithm>
    21 using namespace std;
    22 
    23 char key[1024];
    24 char a[1024];
    25 
    26 void add(char* t) {
    27     char b[1024] = "reg add "HKEY_CLASSES_ROOT\.";
    28     char c[1024] = "\ShellNew" /v "NullFile" /t REG_SZ";
    29     strcat(b, t);
    30     strcat(b, c);
    31     system(b);
    32 }
    33 
    34 void del(char* t) {
    35     char d[1024] = "reg delete "HKEY_CLASSES_ROOT\.";
    36     char e[1024] = "\ShellNew" /f";
    37     strcat(d, t);
    38     strcat(d, e);
    39     system(d);
    40 }
    41 
    42 int main() {
    43     printf("Function: Build a new file simply!
    ");
    44     printf("Author: Haipz
    School: HDU
    ");
    45     printf("Example: Enter "c" to add C and enter "cpp" to add C++;
    ");
    46     printf("         Enter "-c" to delete C.
    ");
    47     do {
    48         printf("Your opion: ");
    49         gets(a);
    50         if (a[0] == '-') del(a + 1);
    51         else add(a);
    52         printf("Enter "r" to run again or any other key to quit: ");
    53         gets(key);
    54     } while (key[0] == 'r');
    55     return 0;
    56 }

    打包下载地址:

     http://files.cnblogs.com/haipzm/Regedity.zip

    注意,如果系统提示缺少某dll文件,请到网上下载,并复制到C:WindowsSystem32目录下。

  • 相关阅读:
    Word Search
    Subsets
    Combinations
    Search a 2D Matrix
    求比正整数N大的最小正整数M,且M与N的二进制表示中有相同数目的1
    Set Matrix Zeroes
    Unity学习笔记—— 常用脚本函数
    学习 各个数据结构
    unity调用 安卓相册
    设置 相机跟随 主角及视角 滑动
  • 原文地址:https://www.cnblogs.com/haipzm/p/3561468.html
Copyright © 2020-2023  润新知