Process.Start权限问题

我正在尝试使用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(); 

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

ProcessStartInfo说一句,我个人觉得创建一个新的ProcessStartInfoProcessStartInfo – C#对象初始化程序使这个特别好),然后调用Process.Start(ProcessStartInfo)来启动它。 否则看起来已经有一个尚未真正有过程的过程。 只是MHO,可能与您正在调查的问题无关。)

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

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

希望能帮助到你。