簡體   English   中英

在C#程序中找不到文件錯誤?

[英]Getting file not found error in C# program?

我已經使用WinBuilder在Windows PE 3.0中包括對.NET 3.0 / 2.0的支持。 我制作了一個程序,用於檢查系統文件夾中的必要程序。 我知道diskpart位於Windows PE中的“ X:\\ Windows \\ System32 \\ diskpart.exe”。 但是當我使用此代碼時:

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的本機支持,但我認為我至少會嘗試。 有人知道這個問題可能是什么嗎?

如果您沒有對該文件的讀取權限,則File.Exists()返回false。

文檔中

如果調用者具有必需的權限並且路徑包含現有文件的名稱,則為true;否則為true 否則為false 如果path為null,無效路徑或長度為零的字符串,則此方法還返回false 如果調用者沒有足夠的權限來讀取指定的文件,則不會拋出異常,並且無論path是否存在,該方法都將返回false

您幾乎總是要避免使用File.Exists(),而只是嘗試打開文件,並在失敗時捕獲異常。 即使您不打算讀取或寫入所獲得的文件流,也是如此。 這具有使您可以立即使用流的好處。

暫無
暫無

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

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