我试图使用Process.Start从C#运行一个外部问题,但遇到了权限问题。当我正常打开一个命令提示符(不是以管理员身份)并运行我的命令时,它们工作得很好,但是当我通过Process.Start打开一个命令提示符时,我在目录上得到一个写错误。("I‘t write on file 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();发布于 2010-11-19 15:41:27
我想知道它是否正在尝试将诊断日志写入当前工作目录,而您可能对此没有权限。(我暂时不知道它是继承工作目录,还是包含cmd.exe的目录。)我建议您使用ProcessStartInfo.WorkingDirectory为新进程指定工作目录。
(顺便说一句,我个人认为创建一个新的ProcessStartInfo并填充- C#对象初始值设定项会让它变得特别好),然后调用Process.Start(ProcessStartInfo)来启动它。否则,看起来已经有了一个进程,而实际上还没有一个。(只是MHO,可能与您正在调查的问题无关。)
发布于 2010-11-19 15:47:51
不使用cmd.exe作为Process对象的FileName属性,而是将命令保存在一个批处理文件中,然后使用该文件执行。
您还可以通过Process类的StartInfo属性提到管理员的权限,如用户名、密码、域等。如果你使用这些属性,我想权限问题就不会出现了。Here您可以找到有关StartInfo属性的更多信息。
希望能有所帮助。
https://stackoverflow.com/questions/4223008
复制相似问题