指定した文字列が 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;
}
}
参照
独自のパスワード認証