给出一个用户名和密码,如何验证它是不是正确的windows密码?

flamkuavos 2011-05-09 10:41:44
在一个地方需要用户填写windows用户名密码,是软件需要,为什么大家就不要追问了。用户名已经有办法获取了,可以校验用户填的用户名对不对。

现在还希望能校验一下填入的这个密码对不对,如果不对要提示用户重新填写密码。

请问怎么做?最好是用windows api的。多谢。
...全文
846 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2011-05-09
  • 打赏
  • 举报
回复
V5
Windows API就OK了。
汪宁宇 2011-05-09
  • 打赏
  • 举报
回复
就一个API,具体自己查MSDN~~

示例代码:
#include <iostream.h>
#include <windows.h>

#pragma comment(lib,"user32.lib")
#pragma comment(lib,"Advapi32.lib")

void main()
{
HANDLE hUser;
char szUserName[MAX_PATH] = "administrator";
char szPassWord[MAX_PATH] = "visualstudio";

if(LogonUser(szUserName,".",szPassWord,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hUser))
{
cout<<"Windows用户密码正确!"<<endl;
}
else
{
cout<<"Windows用户或密码错误!"<<endl;
}
}


运行截图:
flamkuavos 2011-05-09
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <windows.h>

#pragma comment(lib,"user32.lib")
#pragma comment(lib,"Advapi32.lib")

void main()
{
HANDLE hUser;
char szUserName[MAX_PATH] = "administrator";
char szPassWord[MAX_PATH] = "visualstudio";

bool bret = LogonUser(szUserName,".",szPassWord,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hUser);
if (!bret && (strlen(strPassWord == 0) && (GetLastError()==1327) ))
bret = true;
if(bret)
{
cout<<"Windows用户密码正确!"<<endl;
}
else
{
cout<<"Windows用户或密码错误!"<<endl;
}
}



OK
logonuser方法是1L大侠提供的,大家感谢他吧!
flamkuavos 2011-05-09
  • 打赏
  • 举报
回复
恩,看到了,但这样有个问题1L的大哥可能没留意!有的电脑使用的是空密码,而默认情况下windows安全策略是启用了“使用空白密码的本地帐户只允许进行控制台操作”,此时登录是失败的,GetLastError是〖1327〗-登录失败: 用户帐户限制。

wangningyu的方法对以设置了密码的windows都ok,就是没有吧空白密码的情况也纳入进来。
LuciferStar 2011-05-09
  • 打赏
  • 举报
回复
膜拜!

15,475

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧