C#: pida al usuario una contraseña que luego se almacena en SecureString
.net passwords (2)
En la pequeña aplicación que estoy desarrollando actualmente para un cliente, debo preguntarle al usuario su nombre de usuario, contraseña y dominio de inicio de sesión de Windows y luego usarlos con System.Diagnostics.Process.Start para iniciar una aplicación.
Tengo un cuadro de texto con UseSystemPasswordChar para enmascarar la contraseña ingresada.
Necesito un System.Security.SecureString para alimentar la contraseña a System.Diagnostics.Process.Start .
¿Cómo convierto el texto ingresado en cadena segura mientras no lo hago un carácter tras otro? Alternativamente: ¿hay un mejor control de ventana para pedir al usuario una contraseña que devuelva el texto ingresado como SecureString?
Intente mirar el control personalizado SecurePasswordTextBox . ¿Está intentando hacer algo similar a un comando de tipo "Ejecutar como" en el que está intentando ejecutar el proceso como un usuario diferente al que está actualmente conectado? De lo contrario, debería poder simplemente llamar a Process.Start y dejar que recoja las credenciales actuales de los usuarios.
Además, eche un vistazo a los siguientes recursos también:
- CredUIPromptForCredentials
- CredUIPromptForWindowsCredentials (Vista y Server 2008)
- Artículo de soporte de Microsoft
- Función LogonUser
- Función LogonUserEx
- CreateProcessAsUser
- CreateProcessWithLogonW
- CreateProcessWithTokenW
La mejor opción sería probablemente usar algún código interop p / inovke para llamar a CredUIPromptForCredentials para que muestre el cuadro de diálogo estándar de Windows y luego usar esa información para llamar a Process.Start o, más probablemente, llamar a la función CreateProcessAsUser.
La razón por la que SecureString desea aceptar un carácter a la vez es que, de otro modo, tendrías toda la cadena antes de eso y harías que la cadena esté en la memoria. Por lo tanto, el uso de SecureString en este escenario es una especie de fracaso.