[英]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.