Подтвердить что ты не робот

Как создать новый процесс с другой учетной записью пользователя в Windows?

Возможно ли создать новый процесс в Windows с другой учетной записью пользователя? Я знаю, что есть контекстное меню "Запуск от имени", но я хочу сделать это с Java. У меня есть имя пользователя и пароль.

4b9b3361

Ответ 1

Вам нужно написать DLL, используя Java Native Interface (JNI), поскольку вы не можете сделать это с помощью чистого кода Java.

Сама DLL должна вызвать функцию CreateProcessAsUser для создания процесса в контексте другого пользователя. Чтобы успешно создать этот процесс, вам необходимо предоставить токен доступа к функции, которая сама была создана путем вызова функции LogonUser (она берет имя пользователя и пароль для аутентификации этого другого пользователя).

Ответ 2

Существует программа под названием "runas.exe". Вы можете запустить этот процесс и предоставить соответствующие аргументы для вашего процесса и имени пользователя/пароля. Я думаю, что самый простой метод.

Ответ 3

Я просто наткнулся на альтернативу программе runas.exe под названием MiniRunAs, которая возьмет пароль в командной строке - http://www.source-code.biz/snippets/c/1.htm

Если вы можете установить его вместе с вашим приложением, это может оказаться проще, чем написать JNI DLL.

Ответ 4

В зависимости от ваших потребностей API Win32 CreateProcessWithLogonW более прост в использовании, чем функции CreateProcessAsUser/LogonUser.

Из документов MSDN:

The CreateProcessWithLogonW and CreateProcessWithTokenW functions are
similar to the CreateProcessAsUser function, except that the caller 
does not need to call the LogonUser function to authenticate the user 
and get a token

Ответ 5

RUNAS имеет переключатель "/savecred", который позволяет вводить учетные данные только в первый раз. Одна из потенциальных проблем заключается в том, что когда /SaveCred сохраняет учетные данные, они сохраняют его для всякий раз, когда RUNAS вызывает эту учетную запись пользователя. Это может быть огромным риском для безопасности, поэтому будьте осторожны с ним!

Пример http://www.rgagnon.com/javadetails/java-0014.html (в конце)