Processus.Les Autorisations De Démarrage Problème
Je suis en train de lancer un problème externe à partir de C# en utilisant le Processus.Démarrer, mais je suis en cours d'exécution dans les problèmes d'autorisations. Lorsque j'ouvre une invite de commande normalement (pas en tant qu'administrateur) et d'exécuter mes ordres qu'ils fonctionnent très bien, mais quand j'ouvre une invite de commande via un Processus.Démarrer, et j'ai une erreur d'écriture sur le répertoire. ("Je ne peux pas écrire sur le fichier de test.journal")
Si je le lance en tant qu'administrateur via un Processus.De démarrage il fonctionne bien, mais je obtenir les autorisations popup. Quelqu'un a une idée qui pourrait m'aider à comprendre cela? Merci!
Voici le code que j'utilise:
Process proc = new Process();
proc.StartInfo.FileName = @"cmd.exe";
proc.StartInfo.Arguments = @"/k latex C:\Users\Shane\Documents\test.tex";
proc.Start();
proc.WaitForExit();
OriginalL'auteur Shane Fulmer | 2010-11-19
Vous devez vous connecter pour publier un commentaire.
Je me demande s'il essaie d'écrire un journal de diagnostic pour le répertoire de travail actuel, vous ne disposez pas des autorisations pour. (Je ne sais pas désinvolte qu'il héritera du répertoire de travail, ou le répertoire qui contient cmd.exe.) Je vous suggère de spécifier le répertoire de travail pour le nouveau processus à l'aide de
ProcessStartInfo.WorkingDirectory
.(En aparté, personnellement, je trouve cela plus propre à créer un nouveau
ProcessStartInfo
un de renseigner - objet de C# initialiseurs de faire ce particulièrement agréable) et ensuite appelerProcess.Start(ProcessStartInfo)
pour le démarrer. Sinon, il semble comme il y a déjà un processus où il n'y a pas vraiment encore. Juste MUTUELLES cependant, et sans rapport avec le problème que vous étudiez, probablement.)OriginalL'auteur Jon Skeet
Au lieu d'utiliser cmd.exe comme un nom de fichier de la propriété de l'objet de Processus, gardez vos commandes dans un fichier de commandes, puis utiliser ce fichier pour l'exécution.
Vous pouvez également mention de l'administrateur privilages comme nom d'utilisateur, mot de passe, etc domaine via StartInfo propriété de la classe de Processus. Si vous utilisez ces propriétés, je pense que l'autorisation problème ne viendra pas. Ici vous pouvez trouver plus d'informations sur la propriété StartInfo.
Espère que cela aide.
OriginalL'auteur Shekhar