从提升的进程C#重定向输出

时间:2013-04-18 15:04:35

标签: c# redirect

我需要从C#运行一个提升的进程,我需要它来重定向输入和输出。由于完成这三项工作是不可能的,我想我可能已经提出了一个解决方法,但它似乎没有用。

        Process p = new Process();

        string command1 = "/s " + path + "\\script1.script";

        p.StartInfo = new ProcessStartInfo("diskpart",command1)

        {

            UseShellExecute = true,

            CreateNoWindow = false,

            Verb="runas"

        };

        p.Start();

        p.WaitForExit();

有效。它使用只执行list volume的脚本调用DiskPart。 我想将其输出捕获到outfile1.txt。 当我从终端运行以下命令时,它可以工作: diskpart /s script1.script>outfile1.txt 但是,当我将command1修改为"/s " + path + "\\script1.script>+path+"\\outfile1.txt"时,我从DiskPart收到一条错误,指出它无法打开或读取我的文件。 我做错了什么?

修改

没有找到解决方案,但我找到了解决方法。

我试图获取USB驱动器的驱动器号,然后我想将其设置为readonly。但是,使用DriveInfo.Name我能够得到它。 (如果调用它DriveInfo.driveLetter会更有帮助。然后我相应地写了我的DiskPart脚本。

2 个答案:

答案 0 :(得分:0)

您的command1中可能存在语法错误。你说你改成了:

  

" / s" +路径+" \ script1.script> +路径+" \ outfile1.txt"

我认为你想要的是(缺少一个双引号):

  

" / s" +路径+" \ script1.script>" +路径+" \ outfile1.txt"

如果情况并非如此,当您使用终端命令时会发生什么 - " diskpart / s script1.script> outfile1.txt" - 作为command1?您可能希望查看此其他stackoverflow主题以在C#中运行命令:

Run Command Prompt Commands

答案 1 :(得分:0)

没有找到解决方案,但我找到了解决方法。

我试图获取USB驱动器的驱动器号,然后我想将其设置为readonly。但是,使用DriveInfo.Nam e我能够得到它。 (如果调用它DriveInfo.driveLetter会更有帮助。然后我相应地写了我的DiskPart脚本。