• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            missautumn's BLOG

            devote to innovation of technique

            C++中判斷域帳戶(hù)是否被鎖


            相信大家在windows系統(tǒng)下操作域賬戶(hù)管理都是用ADSI來(lái)實(shí)現(xiàn)的,可是有些細(xì)節(jié)有可能會(huì)困惑你很長(zhǎng)時(shí)間.
            比如說(shuō)如何判斷域賬戶(hù)是否被瑣定的問(wèn)題.
            原因:其實(shí)ADSI是對(duì)兩種協(xié)議的封裝來(lái)達(dá)到域管理的目的的.
            1.LDAP (這是最常用的,也是可以跨平臺(tái)使用的一個(gè)協(xié)議)
            2.WinNT (只限于Windows操作系統(tǒng))
            解決辦法:
            當(dāng)你查閱MSDN時(shí),你會(huì)發(fā)現(xiàn)ADSI對(duì)LDAP支持中,對(duì)get_IsAccountLocked方法是不支持的,所以這個(gè)時(shí)候,你必須強(qiáng)制ADSI使用WinNT協(xié)議來(lái)判斷域賬戶(hù)是否被鎖.

             1static HRESULT get_IsAccountLocked(IADsUser* pAdsUser,LPWSTR pszUsername,LPWSTR pszLoginName,LPWSTR pszLoginPass,BOOL& bOut)
             2{
             3    BSTR bstrCN = NULL;
             4    pAdsUser->get_ADsPath(&bstrCN);
             5                
             6    BSTR bstrserver = NULL;
             7    HRESULT hr;
             8    hr = ReceiveServerFromCN(bstrCN,bstrserver);
             9    ::SysFreeString(bstrCN);
            10    //To determine whether the user has been locked out.
            11    if(SUCCEEDED(hr))
            12    {
            13        WCHAR wchNTUser[_MAX_PATH];
            14        memset(wchNTUser,0,sizeof(WCHAR)*_MAX_PATH);
            15        IADsUser * pUserTmp = NULL;
            16        swprintf(wchNTUser,L"WinNT://%s/%s,user",bstrserver,pszUsername);
            17#ifdef _DEBUG
            18        AString strtmp = BSTR2AString(wchNTUser);
            19        wprintf(L"%s",wchNTUser);
            20#endif
            21
            22        BSTR bstrLoginName = SysAllocString(pszLoginName);
            23        AString astrLoginName = BSTR2AString(bstrLoginName);
            24        ::SysFreeString(bstrLoginName);
            25
            26        AString astrTemp = NULL;
            27        int nPos= astrLoginName.lSearch(_T('\\'), 0);
            28        if(nPos>0)
            29            astrTemp = astrLoginName.subStr(0, nPos);
            30
            31        AString astrServer = BSTR2AString(bstrserver);
            32        TCHAR Domain[DNLEN + 1];
            33        LPTSTR domainName = Domain;
            34        if(!GetCurDomainName(domainName))
            35            return E_FAIL;
            36        
            37        AString astrCurDomain = domainName;
            38        if(!astrCurDomain.similarTo(astrServer) || !astrServer.similarTo(astrTemp))
            39        {
            40            bOut = FALSE;
            41            return S_OK;
            42        }

            43        SysFreeString(bstrserver);
            44        HRESULT hrtmp = ADsOpenObject(wchNTUser,pszLoginName,pszLoginPass,ADS_SECURE_AUTHENTICATION,IID_IADsUser,(void**)&pUserTmp);
            45        if(SUCCEEDED(hrtmp))
            46        {
            47            VARIANT_BOOL bret = VARIANT_FALSE;
            48            pUserTmp->get_IsAccountLocked(&bret);
            49            pUserTmp->Release();
            50            if(bret == VARIANT_TRUE)
            51            {
            52                bOut = TRUE;
            53            }

            54            else
            55            {
            56                bOut = FALSE;
            57            }

            58            return S_OK;
            59        }

            60        else
            61        {
            62            return E_FAIL;
            63        }

            64    }

            65    else
            66        return E_FAIL;
            67}



            希望上述內(nèi)容對(duì)你的學(xué)習(xí)、工作有所幫助

            posted on 2007-06-10 17:45 william 閱讀(705) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++

            久久精品国产黑森林| 久久精品国产亚洲AV无码麻豆| 亚洲AV乱码久久精品蜜桃| 久久久久久av无码免费看大片| 91精品观看91久久久久久| 久久久91精品国产一区二区三区| 色偷偷88888欧美精品久久久| 国产A三级久久精品| 亚洲色大成网站www久久九 | 欧美激情精品久久久久| 国产午夜福利精品久久2021 | avtt天堂网久久精品| 99精品久久精品| 91久久精品电影| 久久亚洲高清综合| 久久人人爽人人爽人人片AV高清| 国产成人综合久久精品红| 亚洲AV乱码久久精品蜜桃| 久久ww精品w免费人成| 伊人久久精品线影院| 久久久久99精品成人片三人毛片| 久久亚洲精品国产亚洲老地址| 久久久久久曰本AV免费免费| 久久久一本精品99久久精品88| 99久久成人国产精品免费| 国产精品女同一区二区久久| 日韩人妻无码一区二区三区久久99| 青草国产精品久久久久久| 久久精品国产亚洲欧美| 中文字幕久久精品| 国产精品久久久久久搜索| 欧美久久久久久精选9999| 日韩精品久久久久久免费| 国产精品免费看久久久香蕉| 伊人久久大香线蕉综合Av| 伊人热人久久中文字幕| 亚洲乱码中文字幕久久孕妇黑人| 9999国产精品欧美久久久久久| 亚洲精品乱码久久久久久蜜桃图片| 国内精品久久久久国产盗摄| 天天爽天天狠久久久综合麻豆|