Предположим, у нас есть c: \ DirA, который может быть прочитан только User1, и c: \ DirB, который может быть записан только User2. Оба полномочия известны.
Как я могу скопировать файлы из DirA в DirB напрямую?
Предполагая, что процесс запущен в контексте первого пользователя, запустите LogonUser, чтобы получить маркер безопасности для второго пользователя. Создать поток и вызвать ImpersonateLoggedOnUser, передав токен в качестве параметра. Второй поток будет иметь доступ к DirB. Чтение данных в первом потоке, передача их во второй поток и запись их оттуда.
LogonUser
ImpersonateLoggedOnUser
DirB
Если у пользователя, под которым вы работаете, есть права на резервное копирование или восстановление, проще будет активировать его с помощью OpenProcessToken, за которым следует AdjustTokenPrivileges.
OpenProcessToken
AdjustTokenPrivileges