Last Updated 2005/07/07
Programming Tips Visual C++ API  索 引 
パスワードの一致
2005/07/07

指定した文字列が Windows のパスワードと一致しているかを知るには WNetVerifyPassword() を使用する.
(パスワードの文字列を得ることは出来ない)
しかし,Windows95 限定である.


DWORD WNetVerifyPassword( LPCTSTR lpszPassword, BOOL FAR * pfMatch );



使用例

BOOL IsMatchedPassword(LPSTR lpszPasswd)
{
    char szSysDir[128];
    GetSystemDirectory(szSysDir, 127);
    strcat(szSysDir, "\\MPR.DLL");
    HMODULE hInst = LoadLibrary(szSysDir);
    DWORD (WINAPI* pfnWNetVerifyPassword)(LPCSTR, BOOL*);
    if( !(pfnWNetVerifyPassword = (DWORD(WINAPI*)(LPCSTR, BOOL*))GetProcAddress(hInst, "WNetVerifyPasswordA")) );
        return FALSE;
    
    BOOL bIsMatched;
    if( (*pfnWNetVerifyPassword)(lpszPasswd, &bIsMatched) != WN_SUCCESS) {
        DWORD dwErr = GetLastError();
        TRACE("Procedure call failure. code = %x", dwErr);
        return FALSE;
    }

    if(!bIsMatched){
        // パスワード不一致
        return FALSE;
    } else {
        return TRUE;
    }
}


参照
独自のパスワード認証
前後のTips
パスワードの一致

DSS ProgrammingTipsCGI Ver2.02