,這裏是我的代碼:StreamWriter的訪問被拒絕在Windows啓動時
WebClient versionDownloader = new WebClient();
versionDownloader.DownloadFile("/* Version file here */", "EHWVBVersion.txt");
StreamReader reader = new StreamReader("EHWVBVersion.txt");
if (Version.Parse(reader.ReadLine()) > version)
{
DialogResult dialogResult = MessageBox.Show("New version available ! Do you want to download it ?", "EHWVB", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
reader.Close();
File.Delete("EHWVBVersion.txt");
Process.Start("/* Download link Here */");
Application.Exit();
}
}
reader.Close();
File.Delete("EHWVBVersion.txt");
(是的,有實際聯繫的,而不是在我的代碼中的註釋)
它給我一個錯誤提到訪問拒絕「C:\ WINDOWS \ System32 \ EHWVBVersion.txt」,即使我不在那裏。我猜想它不得不這樣做,有關臨時文件尚未加載的東西,所以我試圖打印之前提到的路徑,並試圖,而不是,它被加載。 於是我編碼此功能:
private void Log(string line)
{
if (!File.Exists("EHWVB.log"))
File.Create("EHWVB.log").Close();
StreamWriter writer = new StreamWriter("EHWVB.log", true);
writer.WriteLine(DateTime.Now + " : " + line);
writer.Close();
}
並試圖登錄這是訪問的版本文件的一切。 我很驚訝地發現,它不是我的版本文件,而是創建問題或路徑,但直接創建文件過程。同樣的錯誤,但這次是「C:\ WINDOWS \ System32 \ EHWVB.log」。
事情是,如果我再次嘗試所有這些不在Windows啓動,一切工作正常。版本文件被下載,記錄工程等。
任何想法?
不能你只需給它的完整路徑,你想* *它把文件? –
不,因爲我希望軟件能夠在任何地方工作。 – Exorion
我認爲我發現了這個問題,這是因爲工作路徑,因爲它在Windows啓動時加載。我實際上正在測試一些用給定的-path參數改變當前路徑的代碼。 – Exorion