• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用VC實現遠程修改NT帳號

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    如果我們在Windows NT Server 4.0上建立一個獨立的郵件 服務器 ,那么郵件服務器的用戶同時也必須是“從批處理作業登錄權限的NT域用戶,因此用戶郵件賬號密碼(亦即NT用戶密碼)的更改,必須以管理員身份登錄到NT才能實現,十分不便。如何才能讓普通郵件用戶
    如果我們在Windows NT Server 4.0上建立一個獨立的郵件服務器,那么郵件服務器的用戶同時也必須是“從批處理作業登錄"權限的NT域用戶,因此用戶郵件賬號密碼(亦即NT用戶密碼)的更改,必須以管理員身份登錄到NT才能實現,十分不便。如何才能讓普通郵件用戶方便自由地更改其賬號密碼呢?下面,筆者就用VC編寫一個CGI程序,來讓普通用戶通過瀏覽器訪問網頁來遠程修改自己的個人帳號信息。  

    調用CGI程序的HTML源代碼如下:  

    ……  
    < form method=“post" action=“/cgi-bin/ChPass.exe" >  
    < table border=1 >  
    < tr >< td >用戶名:< /td >< td >  
    < input name=User maxlength=20 >< /td >< /tr >  
    < tr >< td >口令:< /td >< td >  
    < input name=Password type=password maxlength=20 >  
    < /td >< /tr >  
    < tr >< td >新口令:< /td >< td >  
    < input name=NewPassword1 type=password maxlegth=20 >  
    < /td >< /tr >  
    < tr >< td >確認新口令:< /td >< td >  
    < input name=NewPassword2 type=password maxlength=20 >  
    < /td >< /tr >  
    ……  
      

    該頁面以POST方式調用ChPass.exe CGI程序更改 Windows NT 用戶口令。  

    接下來,我們再來看看實現遠程修改帳號功能的VC源程序 ,在本程序中,用戶的輸入先被轉化為Unicode形式,解碼后作為調用API函數的參數。首先,在VC中新建Win32控制臺應用工程ChPass,部分代碼如下。:  

    ……  
    void PrintMIMEHeader(){  
    cout < < “Content-Type: text/html\n\n";  
    }  
    void PrintHTMLHeader(){  
    cout < < “< html >< head >< title >  
    用戶口令更改< /title >< /head >< body >";  
    }  

    void PrintHTMLTrailer(){  
    cout < < “< /body >< /html >";  
    }  

    void GetPOSTData(){ // 從STDIN中取得表單輸入  
    char* pContentLength;  
    int iContentLength;  
    pContentLength=getenv(“CONTENT_LENGTH");  
    if (pContentLength != NULL)  
    iContentLength=atoi(pContentLength)  
    else  
    iContentLength=0;  
    if (iContentLength >sizeof(szBuffer)-1)  
    iContentLength=sizeof(szBuffer)?1;  
    int i=0;  
    while (i< iContentLength){  
    WCHAR x=fgetwc(stdin);  
    if (x == EOF) break;  
    szBuffer[i ++ ]=x;  
    }  
    szBuffer[i]=‘\0';  
    }  

    //對URL編碼進行解碼  
    void ProcessData(){  
    PWCHAR p;  
    PWCHAR sep=(PWCHAR)“&";  
    User=wcstok(szBuffer,sep);  
    if (User != NULL)  
    Password=wcstok(NULL,sep);  
    if (Password!=NULL)  
    NewPassword1=wcstok(NULL,sep);  
    if (NewPassword1!=NULL)  
    NewPassword2=wcstok(NULL,sep);  
    p=wcsstr(User,L“User=");  
    if(p)  
    wcscpy(User,p+5);  
    else  
    User=NULL;  
    p=wcsstr(Password,L“Password=");  
    if(p)  
    wcscpy(Password,p+9);  
    else  
    Password=NULL;  
    p=wcsstr(NewPassword1,L“NewPassword1=");  
    if(p)  
    wcscpy(NewPassword1,p+13);  
    else  
    NewPassword1=NULL;  
    p=wcsstr(NewPassword2,L“NewPassword2=");  
    if(p)  
    wcscpy(NewPassword2,p+13);  
    else  
    NewPassword2=NULL;  
    }  

    //調用API函數更改口令
    NET_API_STATUS ChangePassword(){  
    return NetUserChangePassword  
    (NULL,User,Password,NewPassword1);  
    //NULL為用戶所屬服務器  
    //User為用戶賬戶名  
    //Password為舊密碼  
    //NewPassword1為新密碼  
    //函數返回值為NET_API_STATUS類型  
    }  

    void main(){  
    char* pRequestMethod;  
    pRequestMethod=getenv  
    (“REQUEST_METHOD");  
    if (pRequestMethod == NULL){  
    cout < <  
    “This program is designed to run as a CGI script\n";  
    return;  
    }  
    //限定以表單提交的形式執行CGI程式,  
    否則將頁面重定向到輸入表單  
    if (strcmp(pRequestMethod,“POST") != 0){  
    cout < < “Location: /changePass.htm\n\n";  
    return;  
    }  
    PrintMIMEHeader();  
    PrintHTMLHeader();  
    GetPOSTData();  
    ProcessData();  

    if(wcscmp(NewPassword1,NewPassword2)== 0)  
    {  
    switch(ChangePassword()){  
    case NERR_Suclearcase/" target="_blank" >ccess:  
    cout < < “< center >  
    < h2 >成功更改用戶密碼。< /h2 >";  
    break;  
    case ERROR_ACCESS_DENIED:  
    cout < < “< center >< h2 >  
    密碼更改失?。壕芙^訪問。< /h2 >";  
    break;  
    case ERROR_INVALID_PASSWORD:  
    cout < < “< center >< h2 >  
    密碼更改失?。簾o效的密碼。< /h2 >";  
    break;  
    case NERR_UserNotFound:  
    cout < < “< center >< h2 >  
    密碼更改失?。翰淮嬖谠撚脩?。< /h2 >";  
    break;  
    case NERR_PasswordTooShort :  
    cout < < “< center >< h2 >密碼更改失?。?nbsp; 
    新密碼不合要求,請選擇新的密碼。< /h2 >";  
    break;  
    default:  
    cout < < “< center >< h2 >密碼更改失敗。< /h2 >";  
    }  

    }  
    else  
    cout < < “< center >< h2 >密碼更改失敗:  
    兩次輸入新口令不一致。< /h2 >";  
    PrintHTMLTrailer();  
    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>