2008-10-17 3 views
2

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

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

ответ

4

В начале, проверить эту статью на окна пользователя олицетворения:

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

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

+0

Я сделал это, и он работает. – kenny 2008-10-17 12:21:34

0

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

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

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

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

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

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

ImpersonateSecurityContext() 
RevertContext() 

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

Надеюсь, это поможет в некотором роде.