源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

清除3389远程登录日志

  • 时间:2022-04-15 03:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:清除3389远程登录日志
[u]复制代码[/u] 代码如下:
/*3389登录日志清除软件*/ #include <windows.h> #include <string.h> #include <stdio.h> #include <stdlib.h> void Usage(char *progname); void OpenKey(char *key); void DelKey(char *key,char *value); void QueryKey(char *key,char *value); void ValidateArgs(int argc, char **argv); int j=1; int main(int argc, char** argv) {     //解析命令行输入:     ValidateArgs(argc, argv);     return 0; } //输出帮助的典型方法: void Usage (char *progname) {     fprintf(stdout,"===============================================================================\n"         "\t名称:3389登录日志清除软件\n"         "\t举例:  clear3389 -h\n"         "\t      \"clear3389 -h\" //帮助信息\n"         "\t      \"clear3389 -a\" //显示本机3389所有登录记录\n"         "\t      \"clear3389 -d MRU9\" //删除指定的3389登录记录\n"         "===============================================================================\n");     exit(0); } //解析命令行输入的典型方法: void ValidateArgs(int argc, char **argv) {        //打开指定的注册表键:     char *Key="Software\\Microsoft\\Terminal Server Client\\Default";     char buff[100]={0};     int  i,i1,length;     if(argc<2)     {         Usage(argv[0]);     }         for(i=1;i<argc;i++)       {         if ((argv[i][0] == '-') || (argv[i][0] == '/'))         {             switch (tolower(argv[i][1])) //转换成小写字母             {                 case 'd': //删除指定的3389登录记录                     if (argc!=3)                     Usage(argv[0]);                     strcpy(buff,argv[2]);                     length = strlen(argv[2]);                     for (i1=0; i1<length; i1++)                     {                         buff[i1] = toupper(buff[i1]);                     }                     //printf("buff=%s\n",buff);                     QueryKey(Key,buff);                     exit(0);                 case 'h'://打印帮助                     Usage(argv[0]);                     exit(0);                 case 'a': //显示本机3389所有登录记录                     if (argc!=2)                     Usage(argv[0]);                     OpenKey(Key);                     exit(0);                 default:                     Usage(argv[0]);                     return;             }         }     }     printf("继续...\n");         return; } //下面是列出所有键值: void OpenKey(char *key) {     HKEY hkey;//注册表键值的句柄     DWORD dwIndex=0,Index=0,lpcbname=1000,ret=0,Type=0,namesize=1500;     char *T_name=(char *)malloc(1000);     unsigned char *name=(unsigned char *)malloc(1500);//保存子键名的字符数组     int i=0;     //下面是字符数组清0:     //ZeroMemory(Buffer,1000);     //ZeroMemory(T_name,1000);     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     //printf("ret=%x\n",ret);     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }     printf("\n(%d)本机的3389登录项目为:\n",j++);     printf("key=HKEY_CURRENT_USER\\%s\n",key);     for(i=1;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值     {         ret=RegEnumValue(hkey,dwIndex,T_name,&lpcbname,             NULL,&Type,name,&namesize);         //dwIndex:欲获取的子项的索引。第一个子项的索引编号为零         //T_name:用于装载指定索引处项名的一个缓冲区         //&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。         if(Type==REG_SZ)         {             printf("%d.数值名称:%s\n",i,T_name);             printf("  数值键值:\"%s\"\n",name);             printf("  数据类型:REG_SZ\n\n");         }         if(Type==REG_DWORD)         {             printf("类型为REG_DWORD!\n");         }          ZeroMemory(T_name,1000);         lpcbname=1000;         ZeroMemory(name,1500);         namesize=1500;     }     RegCloseKey(hkey); //关闭注册键     free(T_name);     free(name); } //下面是查询指定的键值: void QueryKey(char *key,char *value) {     HKEY hkey;//注册表键值的句柄     DWORD dwIndex=0,Index=0,lpcbname=1000,ret=0,Type=0,namesize=1500;     char *T_name=(char *)malloc(1000);     unsigned char *name=(unsigned char *)malloc(1500);//保存子键名的字符数组     int i=0,ret1=0;     //下面是字符数组清0:     //ZeroMemory(Buffer,1000);     //ZeroMemory(T_name,1000);     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     //printf("ret=%x\n",ret);     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }     printf("\n(%d)本机的3389登录项目为:\n",j++);     printf("key=HKEY_CURRENT_USER\\%s\n",key);     for(i=1;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值     {         ret=RegEnumValue(hkey,dwIndex,T_name,&lpcbname,             NULL,&Type,name,&namesize);         //dwIndex:欲获取的子项的索引。第一个子项的索引编号为零         //T_name:用于装载指定索引处项名的一个缓冲区         //&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)         if(stricmp(T_name,value)==0){         if(Type==REG_SZ)         {             printf("%d.数值名称:%s\n",i,T_name);             printf("  数值键值:\"%s\"\n",name);             printf("  数据类型:REG_SZ\n\n");             ret1=1;             DelKey(key,value);         }         if(Type==REG_DWORD)         {             printf("类型为REG_DWORD!\n");         }         }         ZeroMemory(T_name,1000);         lpcbname=1000;         ZeroMemory(name,1500);         namesize=1500;     }     if(!ret1)     { printf("\n注意:数值名称%s不存在,请重新输入,注意大小写!\n",value);     }     RegCloseKey(hkey); //关闭注册键     free(T_name);     free(name); } //下面是删除指定的键值: void DelKey(char *key,char *value) {     HKEY hkey;     DWORD ret;     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }   ret=RegDeleteValue(hkey, value);   if(ret!=ERROR_SUCCESS) {         printf("RegDeleteValue %s error! %x\n",value,GetLastError());         return ;     }     printf("RegDeleteValue %s success!\n",value);     RegCloseKey(hkey); } //------------------------------------------------- /*3389登录日志清除软件*/ #include <windows.h> #include <string.h> #include <stdio.h> #include <stdlib.h> void Usage(char *progname); void OpenKey(char *key); void DelKey(char *key,char *value); void QueryKey(char *key,char *value); void ValidateArgs(int argc, char **argv); int j=1; int main(int argc, char** argv) {     //解析命令行输入:     ValidateArgs(argc, argv);     return 0; } //输出帮助的典型方法: void Usage (char *progname) {     fprintf(stdout,"===============================================================================\n"         "\t名称:3389登录日志清除软件\n"         "\t举例:  clear3389 -h\n"         "\t      \"clear3389 -h\" //帮助信息\n"         "\t      \"clear3389 -a\" //显示本机3389所有登录记录\n"         "\t      \"clear3389 -d MRU9\" //删除指定的3389登录记录\n"         "===============================================================================\n");     exit(0); } //解析命令行输入的典型方法: void ValidateArgs(int argc, char **argv) {        //打开指定的注册表键:     char *Key="Software\\Microsoft\\Terminal Server Client\\Default";     char buff[100]={0};     int  i,i1,length;     if(argc<2)     {         Usage(argv[0]);     }         for(i=1;i<argc;i++)       {         if ((argv[i][0] == '-') || (argv[i][0] == '/'))         {             switch (tolower(argv[i][1])) //转换成小写字母             {                 case 'd': //删除指定的3389登录记录                     if (argc!=3)                     Usage(argv[0]);                     strcpy(buff,argv[2]);                     length = strlen(argv[2]);                     for (i1=0; i1<length; i1++)                     {                         buff[i1] = toupper(buff[i1]);                     }                     //printf("buff=%s\n",buff);                     QueryKey(Key,buff);                     exit(0);                 case 'h'://打印帮助                     Usage(argv[0]);                     exit(0);                 case 'a': //显示本机3389所有登录记录                     if (argc!=2)                     Usage(argv[0]);                     OpenKey(Key);                     exit(0);                 default:                     Usage(argv[0]);                     return;             }         }     }     printf("继续...\n");         return; } //下面是列出所有键值: void OpenKey(char *key) {     HKEY hkey;//注册表键值的句柄     DWORD dwIndex=0,Index=0,lpcbname=1000,ret=0,Type=0,namesize=1500;     char *T_name=(char *)malloc(1000);     unsigned char *name=(unsigned char *)malloc(1500);//保存子键名的字符数组     int i=0;     //下面是字符数组清0:     //ZeroMemory(Buffer,1000);     //ZeroMemory(T_name,1000);     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     //printf("ret=%x\n",ret);     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }     printf("\n(%d)本机的3389登录项目为:\n",j++);     printf("key=HKEY_CURRENT_USER\\%s\n",key);     for(i=1;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值     {         ret=RegEnumValue(hkey,dwIndex,T_name,&lpcbname,             NULL,&Type,name,&namesize);         //dwIndex:欲获取的子项的索引。第一个子项的索引编号为零         //T_name:用于装载指定索引处项名的一个缓冲区         //&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。         if(Type==REG_SZ)         {             printf("%d.数值名称:%s\n",i,T_name);             printf("  数值键值:\"%s\"\n",name);             printf("  数据类型:REG_SZ\n\n");         }         if(Type==REG_DWORD)         {             printf("类型为REG_DWORD!\n");         }          ZeroMemory(T_name,1000);         lpcbname=1000;         ZeroMemory(name,1500);         namesize=1500;     }     RegCloseKey(hkey); //关闭注册键     free(T_name);     free(name); } //下面是查询指定的键值: void QueryKey(char *key,char *value) {     HKEY hkey;//注册表键值的句柄     DWORD dwIndex=0,Index=0,lpcbname=1000,ret=0,Type=0,namesize=1500;     char *T_name=(char *)malloc(1000);     unsigned char *name=(unsigned char *)malloc(1500);//保存子键名的字符数组     int i=0,ret1=0;     //下面是字符数组清0:     //ZeroMemory(Buffer,1000);     //ZeroMemory(T_name,1000);     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     //printf("ret=%x\n",ret);     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }     printf("\n(%d)本机的3389登录项目为:\n",j++);     printf("key=HKEY_CURRENT_USER\\%s\n",key);     for(i=1;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值     {         ret=RegEnumValue(hkey,dwIndex,T_name,&lpcbname,             NULL,&Type,name,&namesize);         //dwIndex:欲获取的子项的索引。第一个子项的索引编号为零         //T_name:用于装载指定索引处项名的一个缓冲区         //&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)         if(stricmp(T_name,value)==0){         if(Type==REG_SZ)         {             printf("%d.数值名称:%s\n",i,T_name);             printf("  数值键值:\"%s\"\n",name);             printf("  数据类型:REG_SZ\n\n");             ret1=1;             DelKey(key,value);         }         if(Type==REG_DWORD)         {             printf("类型为REG_DWORD!\n");         }         }         ZeroMemory(T_name,1000);         lpcbname=1000;         ZeroMemory(name,1500);         namesize=1500;     }     if(!ret1)     { printf("\n注意:数值名称%s不存在,请重新输入,注意大小写!\n",value);     }     RegCloseKey(hkey); //关闭注册键     free(T_name);     free(name); } //下面是删除指定的键值: void DelKey(char *key,char *value) {     HKEY hkey;     DWORD ret;     ret=RegOpenKeyEx(HKEY_CURRENT_USER, //根键名或已打开项的句柄         key,              //传递一个参数,欲打开的注册表项         0,                //未用,设为0即可         KEY_ALL_ACCESS,  //描述新键值安全性的访问掩码                           //它们的组合描述了允许对这个项进行哪些操作         &hkey);          //装载上面打开项的句柄     if(ret!=ERROR_SUCCESS) {         printf("RegOpenKeyEx error! %x\n",GetLastError());         return ;     }   ret=RegDeleteValue(hkey, value);   if(ret!=ERROR_SUCCESS) {         printf("RegDeleteValue %s error! %x\n",value,GetLastError());         return ;     }     printf("RegDeleteValue %s success!\n",value);     RegCloseKey(hkey); }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部