win7-CredentialProvider使用域账户登录
来源:互联网 发布:凌游网络出过什么游戏 编辑:程序博客网 时间:2024/05/05 23:46
背景:用户是针对于固定域的,要求使用域账户登录。
在CredentialProvider实例中,如果用户没有使用域账户,程序会默认获取到当前的计算机名称
if (GetComputerNameW(wsz, &cch))
并作为域的参数传递给
hr = KerbInteractiveUnlockLogonInit(wsz, _rgFieldStrings[SFI_EDIT_TEXT], pwzProtectedPassword, _cpus, &kiul);
经过试验,可以使用第一种方案:在获取到用户输入的账户名后,判断是否使用“\”
WCHAR wsz[MAX_COMPUTERNAME_LENGTH+1] = {0};
WCHAR wUserName[MAX_COMPUTERNAME_LENGTH+1] = {0};
DWORD cch = ARRAYSIZE(wsz);
//判断是否为域账户登录 2014.01.21
PWSTR pwStrDomainName = _rgFieldStrings[SFI_EDIT_TEXT];
string strDomainName = "";
CRegHelper::WcharArr2String(pwStrDomainName,50,strDomainName);
int nPos = strDomainName.find("\\");
if((nPos>0)&&(nPos<strDomainName.size()))
{
CRegHelper::WriteKeyEventLog("使用域账户登录");
CRegHelper::WriteKeyEventLog((char *)strDomainName.c_str());
//使用域账户登录
for(int i = 0; i< nPos; i++)
{
wsz[i] = pwStrDomainName[i];
}
for(int j = nPos+1,p = 0; j<strDomainName.size(); j++,p++)
{
wUserName[p] = pwStrDomainName[j];
}
wcscpy(_rgFieldStrings[SFI_EDIT_TEXT] , wUserName);
}
else
{
//没有使用域账户登录
if(!GetComputerNameW(wsz, &cch))
{
DWORD dwErr = GetLastError();
return HRESULT_FROM_WIN32(dwErr);
}
}
。。。。。。。。。。。。
然后传递给构造kiul 的函数中就可以了。
hr = KerbInteractiveUnlockLogonInit(wsz, _rgFieldStrings[SFI_EDIT_TEXT], pwzProtectedPassword, _cpus, &kiul);
if (SUCCEEDED(hr))
{
hr = KerbInteractiveUnlockLogonPack(kiul, &pcpcs->rgbSerialization, &pcpcs->cbSerialization);
}
还有第二种方案,是观察微软的登录界面,猜测的:
在用户输入登录账户的时候,在 CSampleCredential::GetStringValue 函数中,判断是否有“\”符号出现,如果有出现,则提示用户使用“***”域登录。
这种方案还没有经过实际测试,正在开发中。后续再继续写。
- win7-CredentialProvider使用域账户登录
- 登录方式CredentialProvider的优点
- Win7 :用户账户自动登录方法
- win7和vista如何登录administrator账户
- Ubuntu使用root账户登录
- WIN7笔记本 用户账户登录密码忘记/错误解决方法
- msdn 基于credentialprovider的混合凭据提供程序登录体验
- [ubuntu]如何使用root账户登录
- 使用Oracle安装账户登录数据库
- ubuntu14.04使用root账户登录
- 使用root账户登录ubuntu 15.10
- Deepin(Ubuntu)使用root账户登录
- HTML中使用cookie保存登录账户
- ubuntu14.04使用root账户登录
- C#调用域账户登录窗体代码
- 计算机域账户登录认证LogUser
- jcifs登录域账户 下载文件 等
- SqlServer:使用普通账户登录win7系统时,无法访问.net软件,原因是sql server 数据库拒绝访问,提示user没有权限
- Android学习笔记 第八章
- Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务
- 月下彷徨你已不复当年模样
- android logCat 不打印
- 谷歌宣布2月7日正式关闭社交应用Schemer
- win7-CredentialProvider使用域账户登录
- Oracle11g性能调优--使用SQL Plan Management(2)
- Adapter(适配器模式)
- sqlite语句,关于使用FMDB操作带有外键的数据库
- 计算机视觉、模式识别大牛资料搜集
- strcpy()、memcpy()、memmove()、memset()的实现
- MongoDB 完全手动安装
- 变速公式
- RocketDock不能开机正常启动的解决方法