我已經使用WinBuilder將.NET 3.0/2.0支持包含到Windows PE 3.0中。我製作了一個程序,用於檢查系統文件夾中的必要程序。我知道diskpart位於windows PE中的「X:\ Windows \ System32 \ diskpart.exe」。但是,當我使用此代碼:在C#程序中找不到文件錯誤?
if (File.Exists(@"X:\Windows\System32\diskpart.exe"))
{
MessageBox.Show("Found it");
}
它沒有找到該文件。我曾經試着寫的文本字符串轉換成一個批處理文件,像這樣:
System.IO.WriteAllText(@"X:\temp\diskpart.cmd", "diskpart.exe\npause");
Process proc = new Process;
proc.StartInfo.FileName = @"X:\temp\diskpart.cmd";
proc.Start();
它開始批處理文件就好了,但它說,它無法找到該程序的Diskpart.exe。奇怪的是,當我離開程序並手動輸入X:\ temp \ diskpart.cmd時,它運行的批處理文件很好,並且能夠運行diskpart.exe。我也嘗試將進程的用戶名更改爲SYSTEM,但仍然無效。
我知道在WinPE中對.NET的原生支持不被支持,但我認爲我至少會嘗試。任何人都知道這個問題可能是什麼?
是否嘗試在當前用戶下運行該進程? – k0stya
最初我沒有包含proc.StartInfo.UserName屬性。所以是的。 –
爲什麼不讓你的程序發出Directory.GetFiles(「X:\\」,遞歸)的結果來調試呢?只是看代碼不會導致解決方案。你需要調查。 – usr