Если вам нужен доступ к папкам пользователя A и папкам пользователя B, вам просто нужно настроить разрешения для папок таким образом, чтобы у администраторов были права доступа ко всем папкам. Обычно администраторы машины уже имеют эти права. Я предполагаю, что речь идет о обычных учетных записях пользователей Windows и обычных учетных записях администраторов компьютеров и доменов.
Если вы хотите стать пользователем А, это означает, что вам нужно активное разрешение пользователя А, чтобы стать этим человеком. Олицетворение не простое (из того, что я пробовал), вам нужно запросить доступ через контроллер домена и договориться о том, что вы являетесь пользователем B и что у вас есть права выдавать себя за пользователя A, как правило, это делается путем совместного использования пользователем A и пользователем B и согласование дескрипторов учетных данных и контекстов безопасности. Я сомневаюсь, что это тот тип процесса, которому вы хотите следовать.
Некоторые полезные функции включают в себя:
Для настройки контекста они используются, и данные передаются назад и вперед между Пользователем A и Пользователем B для согласования олицетворения
AcquireCredentialsHandle()
InitializeSecurityContext()
AcceptSecurityContext()
CompleteAuthToken()
После завершения переговоров и создания контекста безопасности они используются для запуска и остановки олицетворения.
ImpersonateSecurityContext()
RevertContext()
Я не знаю другого способа выдать себя за пользователя без активного участия данного пользователя или активного входа в систему под этим пользователем.
Надеюсь, это поможет каким-то образом.