代码之家  ›  专栏  ›  技术社区  ›  Shane Fulmer Lasse V. Karlsen

进程。启动权限问题

  •  7
  • Shane Fulmer Lasse V. Karlsen  · 技术社区  · 14 年前

    我试图使用Process.Start从C运行外部问题,但遇到权限问题。当我正常打开命令提示符(不是作为管理员)并运行命令时,它们工作正常,但是当我通过Process.Start打开命令提示符时,在目录上会出现写错误。(“我无法在文件test.log上写入)
    如果我通过进程以管理员身份运行它。启动它可以正常工作,但我会得到权限弹出窗口。有人有什么想法可以帮我解决这个问题吗?谢谢!

    这是我使用的代码:

    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 回复  |  直到 14 年前
        1
  •  8
  •   Jon Skeet    14 年前

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

    (作为旁白,我个人认为创建一个新的 ProcessStartInfo 填充-C#对象初始值设定项使之特别好),然后调用 Process.Start(ProcessStartInfo) 开始吧。否则,看起来已经有一个过程,而实际上还没有。不过,可能只是MHO,与你正在调查的问题无关。)

        2
  •  1
  •   Shekhar    14 年前

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

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

    希望有帮助。