毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> windows平台 >> 正文

知道域管理员的账户密码,怎么将自身进程以某个域用户身份模拟登录?

更新时间:2013-3-15:  来源:毕业论文

知道域管理员的账户密码,怎么将自身进程以某个域用户身份模拟登录?
实验室的一个项目,其中一个功能是输入域控制器名、域管理员账户、密码能够获取所有的域用户、组、共享文件夹信息。用的VC6+ADSI,现在遇到的问题是在获取文件夹的访问控制信息(DACLs)时,如果文件夹的共享里删除了Everyone用户,则获取函数GetFileSecurity或者GetNamedSecurityInfo失败,返回5(拒绝访问),即使以域管理员身份也没办法,只能以某个域用户的身份才能获取(假设一个文件夹至少有一个域用户是有权限的),我可以轮询所有的域用户来尝试获取文件夹信息,关键是怎么以某个域用户的身份来登录?我不知道域用户的密码,也不能重置,我想拿到这个用户的access token。

我针对远程登录有两种办法,第一种是建立磁盘映射,用WNetAddConnection2W,需要知道密码,估计是不可能的
第二种是模拟登录,LogonUser + ImpersonateLoggedOnUser,我觉得获得一个hToken还靠谱一些,有什么办法获得吗?还是有什么别的思路?

BOOL ADDirectorySearch::logOnByUserPassword(CString strDomainName, CString strUserName, CString strPassword)
{
CString strFullUserName = strDomainName + _T("\\") + strUserName;

HANDLE hToken;
BOOL bResult;
bResult = LogonUser(strUserName, strDomainName, strPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken);
if (bResult == FALSE)
{
MyMessageBox_Error(_T("logOnByUserPassword Error."), _T("Error"));
return FALSE;
}
else
{
bResult = ImpersonateLoggedOnUser(hToken);
if (bResult == FALSE)
{
MyMessageBox_Error(_T("logOnByUserPassword Error."), _T("Error"));
return FALSE;
}
else
{
return TRUE;
}
}
}

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。