情景描述:
访问网络共享路径下的文件时,对齐进行的GetFileAttributesEx、PathFileExists等一系列操作均会失败,返回错误码1326(用户名或密码不正确)
问题原因:
因为磁盘映射是和当前账户关联的,当账户登录之后才会存在这个盘符。
当用一个没有权限token的线程去访问,就需要模拟token(模拟能正常访问者的进程token)
操作步骤:
1.获取操作进程的id。
2、获取操作进程
3.打开操作进程的token
4.模拟token
模拟token操作伪代码:
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, dProcessID);
if (NULL == hProcess)
return;
HANDLE hToken = NULL;
if (OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_DUPLICATE, &hToken))
{
if (ImpersonateLoggedOnUser(hToken))
{
}
CloseHandle(hToken);
}
CloseHandle(hProcess);
RevertToSelf();