亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

清除3389遠程登錄日志

2020-01-26 15:37:21
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

/*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);

}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区成人| 欧美黑人性猛交| 狠狠操狠狠色综合网| 97视频人免费观看| 亚洲老板91色精品久久| 亚洲成人激情视频| 日韩欧美国产激情| 亚洲国产精彩中文乱码av| 欧美激情在线视频二区| 亚洲自拍av在线| 亚洲乱码国产乱码精品精天堂| 亚洲一区二区久久久| 成人国产精品免费视频| 中文字幕日韩精品在线观看| 国产精品丝袜高跟| 亚洲精品电影在线观看| 国产精品成人播放| 国产精品免费久久久久久| 成人在线视频网| 爽爽爽爽爽爽爽成人免费观看| 亚洲男人av电影| 欧美日韩不卡合集视频| 亚洲国产日韩欧美在线图片| 97免费中文视频在线观看| 亚洲影院色无极综合| 久久久在线免费观看| 久久手机免费视频| 色综合伊人色综合网| 九色精品免费永久在线| 午夜精品一区二区三区在线视| 欧美另类高清videos| 国产精品视频网站| 久久久久久久久久久亚洲| 国产精品视频yy9099| 亚洲性xxxx| 国产精品视频资源| 亚州精品天堂中文字幕| 欧美限制级电影在线观看| 亚洲精品成人久久电影| 欧美中文字幕在线观看| 亚洲大胆人体av| 日韩视频免费在线| 中文字幕日韩精品在线观看| 91久久精品久久国产性色也91| 日韩精品中文字幕有码专区| 91网在线免费观看| 久久色免费在线视频| 美女性感视频久久久| 韩国精品久久久999| 国产在线精品一区免费香蕉| 色综合久久久久久中文网| 国产精品久久一区| 精品中文字幕在线2019| 日韩一区二区三区国产| 日韩电视剧在线观看免费网站| 国产拍精品一二三| 亚洲经典中文字幕| 精品国产精品三级精品av网址| 国产成人av网| 国产一区二区视频在线观看| 日韩av不卡电影| 中文字幕在线成人| 欧美俄罗斯性视频| 在线播放国产一区中文字幕剧情欧美| 亚洲精品91美女久久久久久久| 国产精品一区二区三区毛片淫片| 最近2019好看的中文字幕免费| 国产午夜精品全部视频播放| 亚洲a级在线播放观看| 成人免费观看a| 久久99久久99精品免观看粉嫩| 国产精品av在线播放| 欧美裸身视频免费观看| 精品香蕉一区二区三区| 亚洲欧美精品伊人久久| 超碰日本道色综合久久综合| 国产精品精品一区二区三区午夜版| 欧美激情videos| 久久久久久国产| 伊人av综合网| 欧美色图在线视频| 性夜试看影院91社区| 亚洲国产97在线精品一区| 日韩av电影在线网| 日韩免费在线视频| 日韩电影在线观看永久视频免费网站| 国产亚洲激情在线| 欧美电影在线观看| 精品偷拍一区二区三区在线看| 中文字幕国内精品| 久久免费精品日本久久中文字幕| 欧美日韩成人在线视频| 久久不射热爱视频精品| 久热精品视频在线观看一区| 国产亚洲精品久久久久久| 伊人精品在线观看| 亚洲综合大片69999| 久久精品99无色码中文字幕| 国产午夜精品全部视频在线播放| 精品自拍视频在线观看| 欧美一区第一页| 欧美日韩国产色视频| 日韩欧美精品网址| 日本精品性网站在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲欧美国产日韩中文字幕| 日本19禁啪啪免费观看www| 亚洲精品久久久一区二区三区| 亚洲最大的免费| 91精品国产自产91精品| 国产欧美久久一区二区| 国产v综合v亚洲欧美久久| 91国在线精品国内播放| 亚洲综合在线做性| 亚洲丝袜av一区| 亚洲香蕉伊综合在人在线视看| 91在线视频成人| 欧美激情伊人电影| 中文字幕欧美国内| 日韩成人在线电影网| 91网站在线看| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产美女直播视频一区| 亚洲免费电影在线观看| 久久国产精品久久精品| 国产精品成人一区二区三区吃奶| 成人一区二区电影| 成人www视频在线观看| 欧美福利在线观看| 亚洲欧美日韩在线一区| 日本久久久久久| 欧美精品手机在线| 亚洲精品短视频| 毛片精品免费在线观看| 91久久国产婷婷一区二区| 欧美激情视频播放| 91久久国产综合久久91精品网站| 欧美日韩国产综合视频在线观看中文| 国产专区精品视频| 疯狂做受xxxx欧美肥白少妇| 国产精品一区二区久久精品| 成人午夜激情免费视频| 麻豆国产精品va在线观看不卡| 亚洲男女自偷自拍图片另类| 国产精品电影网| 2020久久国产精品| 亚洲少妇中文在线| 亚洲精品理论电影| 精品国产成人在线| 成人日韩av在线| 国产精品视频一| 国产mv免费观看入口亚洲| 性色av一区二区三区免费| 欧美俄罗斯性视频| 国产日韩欧美综合| 亚洲精品动漫100p| 国产97免费视| 国产午夜精品免费一区二区三区| 亚洲一级黄色av| 中文字幕在线看视频国产欧美在线看完整| 日本久久久久久久久久久| 日韩欧美主播在线| 欧美另类第一页| 2020国产精品视频|