0

我需要从 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();

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

编辑

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

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

4

2 回答 2

0

您的 command1 中可能有语法错误。您说您将其更改为:

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

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

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

如果不是这种情况,当您使用终端命令 - “diskpart /s script1.script>outfile1.txt” - 作为 command1 时会发生什么?您可能想查看其他 stackoverflow 主题以在 C# 中运行命令:

运行命令提示符命令

于 2013-04-18T17:14:33.510 回答
0

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

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

于 2017-05-10T07:19:51.293 回答