,这里是我的代码: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