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

Причина в рекурсии: вы звоните $em->flush(); от абонента, EntityManager вводит flush, запускает событие preFlush, которое вызывает ваш обработчик, который снова вызывает $em->flush() и т. Д.

IIRC preFlush вызывается перед вычислением набора изменений, так что простого обновления вашей сущности новым значением должно быть достаточно, чтобы Doctrine обнаружила указанное изменение.

11
задан Robert Gould 12 December 2008 в 08:39
поделиться

5 ответов

Необходимо записать DLL с помощью Собственного интерфейса Java (JNI), поскольку Вы не можете сделать этого с чистым кодом Java.

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

6
ответ дан 3 December 2019 в 08:57
поделиться

В зависимости от Ваших потребностей Win32 API "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
1
ответ дан 3 December 2019 в 08:57
поделиться

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

4
ответ дан 3 December 2019 в 08:57
поделиться

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

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

0
ответ дан 3 December 2019 в 08:57
поделиться

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

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

2
ответ дан 3 December 2019 в 08:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: