我需要从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脚本。
答案 0 :(得分:0)
您的command1中可能存在语法错误。你说你改成了:
" / s" +路径+" \ script1.script> +路径+" \ outfile1.txt"
我认为你想要的是(缺少一个双引号):
" / s" +路径+" \ script1.script>" +路径+" \ outfile1.txt"
如果情况并非如此,当您使用终端命令时会发生什么 - " diskpart / s script1.script> outfile1.txt" - 作为command1?您可能希望查看此其他stackoverflow主题以在C#中运行命令:
答案 1 :(得分:0)
没有找到解决方案,但我找到了解决方法。
我试图获取USB驱动器的驱动器号,然后我想将其设置为readonly。但是,使用DriveInfo.Nam
e我能够得到它。 (如果调用它DriveInfo.driveLetter
会更有帮助。然后我相应地写了我的DiskPart脚本。