は、ここに私のコードですWindowsの起動時に拒否されました:のStreamWriterアクセス
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