2008-09-26 7 views
8

Возможно ли выдавать себя за пользователя без предоставления имени пользователя/пароля? В принципе, я хотел бы получить CSIDL_LOCAL_APPDATA для пользователя (а не текущего) с помощью функции ShGetFolderPath(). Все, что у меня есть, это SID для этого пользователя.Возможно ли выдавать себя за пользователя без его регистрации?

ответ

6

Нет, вы должны вызвать Win32 API Функция LogonUser, чтобы получить токен учетной записи Windows, чтобы затем выдать себя.

+0

Хм, это объясняет, почему я не могу заставить его работать правильно ... Есть ли другой способ получить этот путь? Благодарю. – dennisV 2008-09-26 01:34:06

7

Вы можете выдавать себя за пользователя без предоставления пароля, вызывая ZwCreateToken. См. Функцию CreatePureUserToken в этой статье: GUI-Based RunAsEx Для этого вы должны работать как администратор (или LocalSystem).

Другой способ - использовать пакеты субатентификации Windows. Это позволяет вам переопределить встроенную аутентификацию Windows и позволить LogonUser преуспеть, даже если пароль не был предоставлен. См. Это KB article.