簡體   English   中英

從提升的過程C#重定向輸出

[英]Redirecting output from elevated process C#

我需要從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驅動器的驅動器號,然后將其設置為只讀。 但是,使用DriveInfo.Name可以獲取它。 (如果將其命名為DriveInfo.driveLetter可能會有所幫助)然后,我相應地編寫了DiskPart腳本。

您的command1中可能存在語法錯誤。 您說您將其更改為:

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

我想您想要的是(缺少一個雙引號):

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

如果不是這種情況,當您使用終端命令“ diskpart / s script1.script> outfile1.txt”作為command1時會發生什么? 您可能需要查看另一個stackoverflow主題,以在C#中運行命令:

運行命令提示符命令

找不到解決方案,但我找到了解決方法。

我試圖獲取USB驅動器的驅動器號,然后將其設置為只讀。 但是,使用DriveInfo.Nam我可以得到它。 (如果將其命名為DriveInfo.driveLetter可能會有所幫助)然后,我相應地編寫了DiskPart腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM