Олицетворение MFC C ++ - PullRequest
       10

Олицетворение MFC C ++

2 голосов
/ 17 октября 2008

Я хочу выдать себя за другого пользователя в Windows. Например: Я создаю каталог с разрешениями только для пользователя A и для администраторов, при входе в систему с пользователем B и запуске .exe я хочу выдать себя за пользователя A, чтобы получить разрешение на редактирование / удаление / вставку в этом конкретном каталоге.

Я нашел это: http://msdn.microsoft.com/en-us/library/aa374731(VS.85).aspx

Ответы [ 2 ]

4 голосов
/ 17 октября 2008

Для начала ознакомьтесь с этой статьей, посвященной олицетворению пользователя Windows:

http://www.codeproject.com/KB/system/UserImpersonation.aspx

Это должно дать вам место для начала. Если вам нужно больше контроля, вам нужно обратиться к токенам доступа.

0 голосов
/ 17 октября 2008

Если вам нужен доступ к папкам пользователя A и папкам пользователя B, вам просто нужно настроить разрешения для папок таким образом, чтобы у администраторов были права доступа ко всем папкам. Обычно администраторы машины уже имеют эти права. Я предполагаю, что речь идет о обычных учетных записях пользователей Windows и обычных учетных записях администраторов компьютеров и доменов.

Если вы хотите стать пользователем А, это означает, что вам нужно активное разрешение пользователя А, чтобы стать этим человеком. Олицетворение не простое (из того, что я пробовал), вам нужно запросить доступ через контроллер домена и договориться о том, что вы являетесь пользователем B и что у вас есть права выдавать себя за пользователя A, как правило, это делается путем совместного использования пользователем A и пользователем B и согласование дескрипторов учетных данных и контекстов безопасности. Я сомневаюсь, что это тот тип процесса, которому вы хотите следовать.

Некоторые полезные функции включают в себя:

Для настройки контекста они используются, и данные передаются назад и вперед между Пользователем A и Пользователем B для согласования олицетворения

AcquireCredentialsHandle()
InitializeSecurityContext()
AcceptSecurityContext()
CompleteAuthToken()

После завершения переговоров и создания контекста безопасности они используются для запуска и остановки олицетворения.

ImpersonateSecurityContext()
RevertContext()

Я не знаю другого способа выдать себя за пользователя без активного участия данного пользователя или активного входа в систему под этим пользователем.

Надеюсь, это поможет каким-то образом.

...