¿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.¿Cómo puedo crear un nuevo proceso con otra cuenta de usuario en Windows?
Respuesta
Necesita escribir una DLL usando Java Native Interface (JNI) ya que no puede hacer esto con el código Java puro.
La DLL necesita llamar a la función CreateProcessAsUser para crear un proceso en el contexto de otro usuario. Para crear correctamente ese proceso, debe proporcionar un token de acceso a la función, que se creó llamando a la función LogonUser (se necesita el nombre de usuario y la contraseña para autenticar a ese otro usuario).
Hay un programa llamado "runas.exe". Puede ejecutar ese proceso y proporcionar los argumentos apropiados para su proceso y nombre de usuario/contraseña. Creo que ese es el método más simple.
RUNAS tiene el interruptor "/ savecred" que le permite ingresar la credencial solo la primera vez. Un posible problema es que cuando/SaveCred guarda las credenciales, las guarda cada vez que RUNAS invoca esa cuenta de usuario. Esto puede ser un gran riesgo de seguridad, así que ten cuidado al usarlo.
Ejemplo en http://www.rgagnon.com/javadetails/java-0014.html (al final)
Según las necesidades de la API de Win32 "CreateProcessWithLogonW" es más fácil de usar que las funciones "CreateProcessAsUser/LogonUser".
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
Acabo de funcionar a través de 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 instalar junto con su aplicación, que puede ser más simple que escribir una DLL JNI.
- 1. Cómo crear un nuevo usuario en AWS
- 2. crear cuenta de usuario local
- 3. ¿Cómo puedo crear una cuenta XMPP?
- 4. Crear usuario local con PowerShell (Windows Vista)
- 5. crear un nuevo DSN de usuario ODBC con Delphi
- 6. ¿Cómo puedo crear un nuevo HttpContext?
- 7. ¿Cómo crear un proceso en C++ en Windows?
- 8. Crear un nuevo usuario de db en SQL Server 2005
- 9. ¿Cómo puedo escribir en otra memoria de proceso?
- 10. proveedor de funciones de Windows ASP.NET (AspNetWindowsTokenRoleProvider) sin darse cuenta de un usuario que se añade a un nuevo grupo
- 11. Ejecutar nuevo proceso como usuario diferente en vb.net
- 12. ¿Cómo puedo crear un temporizador de cuenta regresiva para cocos2d?
- 13. ¿Cómo puedo crear un multihilo en C para Windows?
- 14. Cómo eliminar la cuenta de usuario de Windows usando C#
- 15. ¿Cómo puedo crear un nuevo operador en PHP?
- 16. Inyectar una cuenta de usuario en mySQL
- 17. Cómo crear un nuevo archivo en Qt
- 18. Cómo crear un proceso en Java
- 19. Idear: ¿crear una cuenta de usuario con confirmado sin enviar un correo electrónico?
- 20. check_password() de un usuario nuevo
- 21. Iniciar un nuevo proceso y matar el proceso actual
- 22. Crear cuenta de usuario local C# y .NET 2.0
- 23. ¿Cómo actualizar el objeto Usuario sin crear uno nuevo?
- 24. Iniciar un proceso con credenciales de un servicio de Windows
- 25. Use las tablas de cuenta y de usuario con Devise
- 26. Crear un proceso de asistente en backbone.js
- 27. Ejecución de un proceso Java en Windows incluso después de que el usuario haya cerrado sesión
- 28. Azure ACS 2.0 con cuenta de Microsoft en Windows 8
- 29. Comenzar un nuevo proceso en nodejs
- 30. Crear una interfaz de usuario para supervisar e interactuar con un servicio de Windows en ejecución
Buena idea, pero esto no funciona, porque no puede pasar la contraseña a runas.exe. La contraseña debe ser ingresada por el usuario. Si redirige la entrada del proceso, los runas finalizan con un error. – Horcrux7