Process.Start Проблема с разрешениями - PullRequest
7 голосов
/ 19 ноября 2010

Я пытаюсь запустить внешнюю проблему из C # с помощью Process.Start, но сталкиваюсь с проблемами с разрешениями. Когда я обычно открываю командную строку (не как администратор) и выполняю свои команды, они работают нормально, но когда я открываю командную строку через Process.Start, я получаю ошибку записи в каталог. («Я не могу записать в файл test.log»)
Если я запускаю его как администратор через Process.Start, он работает нормально, но я получаю всплывающее окно с разрешениями. У кого-нибудь есть идеи, которые могли бы помочь мне понять это? Спасибо!

Вот код, который я использую:

Process proc = new Process();
proc.StartInfo.FileName = @"cmd.exe";
proc.StartInfo.Arguments = @"/k latex C:\Users\Shane\Documents\test.tex";
proc.Start();
proc.WaitForExit();

Ответы [ 2 ]

8 голосов
/ 19 ноября 2010

Интересно, пытается ли он записать диагностический журнал в текущий рабочий каталог, для которого у вас нет прав? (Я не знаю, будет ли он наследовать рабочий каталог или каталог, содержащий cmd.exe.) Я предлагаю вам указать рабочий каталог для нового процесса, используя ProcessStartInfo.WorkingDirectory.

(Кроме того, лично я считаю чище создавать новое ProcessStartInfo заполнение, которое - C инициализаторы объектов делают это особенно приятным), а затем вызываю Process.Start(ProcessStartInfo), чтобы запустить его. В противном случае, похоже, что процесс уже есть, а его еще нет. Только MHO, и, возможно, не имеет отношения к проблеме, которую вы исследуете.)

1 голос
/ 19 ноября 2010

Вместо того, чтобы использовать cmd.exe в качестве свойства FileName объекта Process, сохраните ваши команды в одном пакетном файле и затем используйте этот файл для выполнения.

Также вы можете упомянуть привилегии администратора, такие как имя пользователя, пароль, домени т.д. через свойство StartInfo класса Process.Если вы используете эти свойства, я думаю, что проблема с разрешением не придет. Здесь вы можете найти больше информации о свойстве StartInfo.

Надеюсь, это поможет.

...