Pregunta

¿Es posible crear un nuevo proceso en Windows con una cuenta de usuario diferente? Sé que hay un menú contextual "Ejecutar como" pero quiero hacerlo desde Java. Tengo el nombre de usuario y la contraseña.

¿Fue útil?

Solución

Usted tiene que escribir un archivo DLL mediante el Java Native Interface (JNI) como no se puede hacer esto con el código Java puro.

El DLL propio tiene que llamar a la CreateProcessAsUser función para crear un proceso en el contexto de otro usuario. Para crear con éxito este proceso es necesario proporcionar un token de acceso a la función, la cual fue a su vez crea llamando a la función LogonUser (que toma el nombre de usuario y contraseña para Authentify que otro usuario).

Otros consejos

Hay un programa llamado "runas.exe." Usted podría funcionar ese proceso y suministrar los argumentos adecuados para su proceso y nombre de usuario / contraseña. Creo que es el método más simple.

Yo sólo encontré con una alternativa a los programas llamados runas.exe MiniRunAs que tendrá la contraseña en la línea de comandos - http://www.source-code.biz/snippets/c/1.htm

Si usted es capaz de instalarlo junto con su solicitud, que puede resultar más sencillo que escribir un archivo DLL JNI.

En función de sus necesidades el Win32 API " CreateProcessWithLogonW " es más fácil de usar que las "funciones CreateProcessAsUser / LogonUser".

A partir de MSDN Docs:

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

RUNAS tiene el "/ savecred" que le permiten entrar en la credencial sólo la primera vez. Un problema potencial es que cuando / savecred guarda las credenciales que lo guarda para cuando RUNAS invoca esa cuenta de usuario. Esto puede ser un gran riesgo para la seguridad así que ten cuidado de usarlo!

Ejemplo en http://www.rgagnon.com/javadetails/java-0014 .html (al final)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top