Pregunta

Tengo que empezar un programa de línea de comandos con System.Diagnostics.Process.Start () y ejecutarlo como administrador.

Esta acción también estará a cargo de una tarea programada todos los días.

¿Fue útil?

Solución 5

Lo encontré, tengo que configurar la tarea programada para ejecutar la aplicación con privilegios más altos en Configuración general.

Otros consejos

He sólo trato de usar:

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

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

Una mejor opción segura para ejecutar un proceso con el nombre de usuario y contraseña es utilizar la clase SecureString para cifrar la contraseña. Aquí una muestra de 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);

Se debe permitir que el código inseguro en las propiedades del proyecto.

Espero que esto ayuda.

Si está utilizando tareas programadas, puede configurar el usuario y la contraseña para la tarea a ejecutar bajo.

Utilice las credenciales de administrador en la tarea y se le multa.

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();

Tenga en cuenta que almacenar una contraseña en texto claro en un programa nunca está seguro, siempre que alguien pueda leer detenidamente la aplicación y ver lo que hay en ella. Usando SecureString para convertir una contraseña almacenada en una contraseña SecureString no significa que sea más seguro, ya que la contraseña en texto claro todavía estaría presente.

La mejor manera de utilizar SecureString es pasar un solo carácter para su conversión en un momento de alguna manera que no requiera tener la contraseña en cualquier lugar sin cifrar completa en la memoria o en el disco duro. Después de que el carácter es convertido, el programa debe olvidarse de él y, a continuación, pasar a la siguiente.

Esto podría hacerse Creo que solamente pasando a través de personajes para la traducción a medida que se escriben en la consola por el usuario.

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