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

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

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

请问怎么做?最好是用windows api的。多谢。
...全文
495 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
膜拜!
  • 打赏
  • 举报
回复
相关推荐
发帖
进程/线程/DLL

1.5w+

社区成员

VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
帖子事件
创建了帖子
2011-05-09 10:41
社区公告
暂无公告