VC パスワード変更プログラム(NetUserChangePassword)

  • デル株式会社
  • 「管理者がどこからでも、パスワード変更できるツール作れっ!!
    って言われて作った。
    ある程度、動くと思うけどねぇ。

    こんな感じ。
    金くれっかなぁ~?

     

    パスワード変更

    パスワード変更する、ソース。
    エディットなどのメンバーは適宜変更してちょ。

    ちなみに、「NetUserChangePassword」は、
    ヘルプをよく読むこと。バグの責任は取りません。自己責任で。。

     

    void CPasswordChgDlg::OnBnClickedButton1()
    {
        NET_API_STATUS status = NERR_Success;
    
        CHAR szSerName  [ _MAX_PATH ] = { NULL };
        CHAR szNewPws   [ _MAX_PATH ] = { NULL };
        CHAR szPws      [ _MAX_PATH ] = { NULL };
        CHAR szUser     [ _MAX_PATH ] = { NULL };
    
        WCHAR wszSerName[ _MAX_PATH ] = { NULL };
        WCHAR wszNewPws [ _MAX_PATH ] = { NULL };
        WCHAR wszPws    [ _MAX_PATH ] = { NULL };
        WCHAR wszUser   [ _MAX_PATH ] = { NULL };
           
        m_edtSerName.GetWindowTextA( ( LPTSTR )szSerName, _MAX_PATH );
        m_edtNewPws.GetWindowTextA ( ( LPTSTR )szNewPws,  _MAX_PATH );
        m_edtPws.GetWindowTextA    ( ( LPTSTR )szPws,     _MAX_PATH );
        m_edtUser.GetWindowTextA   ( ( LPTSTR )szUser,    _MAX_PATH );
    
        // 変換
        if( ::MultiByteToWideChar( CP_THREAD_ACP,
                                   0,
                                   szSerName,
                                   strlen( szSerName ) + 1,
                                   wszSerName,
                                   sizeof( wszSerName ) ) == 0 )
        {
            MessageBox( "文字変換に失敗" );
            return;
        }
    
        ::MultiByteToWideChar( CP_THREAD_ACP, 0, szUser,   strlen( szUser   ) + 1, wszUser,   sizeof( wszUser   ) ) ;
        ::MultiByteToWideChar( CP_THREAD_ACP, 0, szPws,    strlen( szPws    ) + 1, wszPws,    sizeof( wszPws    ) ) ;
        ::MultiByteToWideChar( CP_THREAD_ACP, 0, szNewPws, strlen( szNewPws ) + 1, wszNewPws, sizeof( wszNewPws ) ) ;
    
        status = NetUserChangePassword( wszSerName, wszUser, wszPws, wszNewPws );
    
        if (status != NERR_Success)
        {
            if ( status == ERROR_INVALID_PASSWORD )
            {
                MessageBox( "ERROR_INVALID_PASSWORD" );
            }
            else if( status == NERR_InvalidComputer )
            {
                MessageBox( "NERR_InvalidComputer" );
            }
            else if( status == NERR_NotPrimary )
            {
                MessageBox( "NERR_NotPrimary" );
            }
            else if( status == NERR_UserNotFound )
            {
                MessageBox( "NERR_UserNotFound" );
            }
            else if( status == NERR_PasswordTooShort )
            {
                MessageBox( "NERR_PasswordTooShort" );
               
            }
            else
            {
                CString str;
    
                str.Format( "なんだかわからん失敗[ %d ]", status );
    
                MessageBox( str );
            }
    
            return ;
        }
    
        MessageBox( "パスワード変更しました。");
    }
    

    関連記事

    ページ上部へ戻る