【发布时间】:2019-10-27 10:05:40
【问题描述】:
从共享启动后,我的程序将复制到 %temp% 下的本地计算机。这完全符合我在 Windows 10 中的要求,但是这也是在使用 Windows 7 计算机的环境中。
最初我只是 File.Copy 作为将文件复制到 %temp% 的方式,经过一些测试后,我发现第二种方法可以创建文件,但我无法创建我的 *.exe,文件在我完成后立即从系统中删除。
我将位置称为 %temp%,但实际上我的意思是它的等价物
如何将位置设置为临时文件位置 Path.GetTempPath() 视窗 10
File.Copy(src, dest)
Windows 7
FileInfo srcInfo = new FileInfo(src);
FileStream srcStream = srcInfo.OpenRead();
FileStream destStream = File.Create(dest);
srcStream.CopyTo(destStream);
destStream.Close();
srcStream.Close();
我还尝试了其他格式来读取、创建和写入文件,例如使用 FileStream 声明它
我一直在研究完成相同任务的其他方法,但是我找不到适合我的方法,而且我找到的所有答案都非常过时。
我正在使用 Visual Studio 2017 Enterprise 编译应用程序并在 .NET 4.5 中编写它
我的应用程序已经过测试,在没有复制和复制到其他位置的情况下运行,它工作正常。它只是针对用户个人资料。我已经测试过以管理员身份和普通用户身份通过组策略运行它。
一个合适的答案是详细说明不受 Windows 7 UAC 影响的更合适的文件位置或我所描述的问题的解决方案。
【问题讨论】:
-
文件在我完成后立即从系统中删除。 这通常是因为防病毒/恶意软件检测软件会删除突然出现的未签名可执行文件。也可能是因为 Windows 配置为在关闭时从 %TEMP% 中删除文件,因为 %TEMP% 应该用于临时文件,而不是持久文件。这就是名称中包含 TEMP 的原因。 :-)
-
或许您可以使用Environment.SpecialFolder 找到合适的保存位置。
-
我将从向我们的 AV 添加一个例外开始,然后再试一次。我唯一的想法是它在 Windows 10 上运行得非常好,我们以完全相同的方式管理系统,因此 AV 在 7 和 10 上的行为应该相同。