Question

Je dois lancer un programme de ligne de commande avec System.Diagnostics.Process.Start () et l'exécuter en tant qu'administrateur.

Cette action sera également géré par un chaque jour une tâche planifiée.

Était-ce utile?

La solution 5

Je l'ai trouvé, je dois mettre la tâche planifiée pour exécuter l'application avec des privilèges plus élevés dans les paramètres généraux.

Autres conseils

Je suis juste essayer d'utiliser:

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

cela fonctionne très bien si je suis en cours d'exécution de mon programme en tant qu'administrateur, mais lorsque la tâche planifiée exécute, il ne prend pas les « runas » en considération, je pense.

Une meilleure option sûre pour exécuter un processus avec login et mot de passe est d'utiliser la classe SecureString pour chiffrer le mot de passe. Voici un exemple de code:

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

Vous devez permettre à un code dangereux dans les propriétés de votre projet.

Hope cette aide.

Si vous utilisez des tâches planifiées, vous pouvez définir l'utilisateur et mot de passe pour la tâche à exécuter sous.

Utilisez les informations d'identification d'administrateur sur la tâche et vous serez très bien.

Avec Process.Start, vous devez fournir les UserName et Password pour le ProcessStartInfo:

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

Sachez que le stockage d'un mot de passe en texte clair dans un programme est sécurisé jamais aussi longtemps que quelqu'un peut prendre connaissance de l'application et voir ce qui est en elle. En utilisant SecureString pour convertir un mot de passe stocké dans un mot de passe de SecureString ne le rend pas plus sûr, parce que le mot de passe en texte clair serait toujours présent.

La meilleure façon d'utiliser SecureString est de passer un seul caractère pour la conversion à un moment qui ne someway nécessitent d'avoir le mot de passe partout non crypté complet en mémoire ou sur le disque dur. Après que le caractère est converti, le programme devrait l'oublier, puis passez à la suivante.

Je pense peut se faire qu'en passant par des personnages pour la traduction car ils sont tapés dans la console par l'utilisateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top