模拟token访问网络共享路径下的文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao3132453/article/details/90918813

情景描述:

访问网络共享路径下的文件时,对齐进行的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();

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/90918813