Возможно ли создать новый процесс в Windows с другой учетной записью пользователя? Я знаю, что есть контекстное меню "Запуск от имени", но я хочу сделать это с Java. У меня есть имя пользователя и пароль.
Как создать новый процесс с другой учетной записью пользователя в Windows?
Ответ 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 (в конце)