2010-11-05 91 views

Respuesta

0

lo encontré, tengo que configurar la tarea programada para ejecutar la aplicación con privilegios más altos en los ajustes generales.

9

acabo de tratar de usar:

Process p = new Process(); 
p.StartInfo.Verb = "runas"; 

esto funciona bien si estoy corriendo mi programa como administrador, pero cuando la tarea programada ejecuta, no hace falta ser las runas '' en consideración, creo.

+0

Yepaaah. Gran solución Gracias por compartir. ¡me has alegrado el día! – Nasenbaer

2

Si está utilizando tareas programadas, puede configurar el usuario y la contraseña para que la tarea se ejecute.

Utilice las credenciales de administrador en la tarea y estará bien.

Con Process.Start, es necesario suministrar el UserName y Password para la ProcessStartInfo:

Process p = new Process("pathto.exe"); 
p.StartInfo.UserName = "Administrator"; 
p.StartInfo.Password = "password"; 
p.Start(); 
4

Una opción más segura para ejecutar un proceso con inicio de sesión y contraseña es usar la clase SecureString para encriptar la contraseña. Aquí una muestra del código:

string pass = "yourpass"; 
string name ="login"; 
SecureString str; 
ProcessStartInfo startInfo = new ProcessStartInfo(); 
char[] chArray = pass.ToCharArray(); 
fixed (char* chRef = chArray) 
{ 
    str = new SecureString(chRef, chArray.Length); 
} 
startInfo.Password = str; 
startInfo.UserName = name; 
Process.Start(startInfo); 

Debe permitir el código no seguro en las propiedades de su proyecto.

Espero que esta ayuda.

1

Tenga en cuenta que almacenar una contraseña en texto sin formato en un programa nunca es seguro, siempre y cuando alguien pueda leer detenidamente la aplicación y ver qué contiene. El uso de SecureString para convertir una contraseña almacenada en una contraseña de SecureString no lo hace más seguro, porque la contraseña de texto claro aún estaría presente.

La mejor manera de usar SecureString es pasar un solo caracter para la conversión a la vez de alguna manera que no requiera tener la contraseña completa sin encriptar en ninguna parte de la memoria o en el disco duro. Después de que ese personaje se convierte, el programa debe olvidarlo, y luego pasar al siguiente.

Esto podría hacerse. Creo que solo se deben pasar los caracteres a través de la traducción a medida que el usuario los escribe en la consola.

Cuestiones relacionadas