Process.Start权限问题

时间:2010-11-19 07:37:05

标签: c# .net latex processstartinfo

我正在尝试使用Process.Start从C#运行外部问题,但遇到了权限问题。当我正常打开命令提示符(而不是管理员)并运行我的命令时,它们工作正常,但是当我通过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 个答案:

答案 0 :(得分:8)

我想知道它是否正在尝试将诊断日志写入当前工作目录,您可能没有权限。 (我不知道它是否会继承工作目录,或者是包含cmd.exe的目录。)我建议你使用ProcessStartInfo.WorkingDirectory指定新进程的工作目录。

(顺便说一句,我个人认为创建一个新的ProcessStartInfo填充程序更加清晰 - C#对象初始化程序使这个特别好用)然后调用Process.Start(ProcessStartInfo)启动它。否则看起来已经有一个尚未真正进行的过程。只是MHO,可能与您正在调查的问题无关。)

答案 1 :(得分:1)

不使用cmd.exe作为Process对象的FileName属性,而是将命令保存在一个批处理文件中,然后使用该文件执行。

您还可以通过Process类的StartInfo属性提及管理员的用户名,密码,域等权限。如果您使用这些属性,我认为不会出现权限问题。 Here您可以找到有关StartInfo属性的更多信息。

希望它有所帮助。

相关问题