【问题标题】:Windows 7 Copying IssueWindows 7 复制问题
【发布时间】: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 上的行为应该相同。

标签: c# windows-7


【解决方案1】:

您可以测试一些替代方案:

var bSource = File.ReadAllBytes(src);
File.WriteAllBytes(dest, bSource);

但这听起来更像是一个 AV 问题。

【讨论】:

  • 这并没有为我解决任何问题。我在没有 AV、GPO 的活动或其他管理的基本机器上做了一些测试,它仍然给我相同的结果。
【解决方案2】:

@Wubbler 提到使用 Environment.SpecialFolder 我使用此方法在一个非常一般的位置运行。虽然我的应用程序已签名,但我的测试计算机显然很差。

回到工作岗位后,我能够在原始机器上进行测试,我为 myapp.exe 添加了排除项,在我的情况下,这是一个我需要排除的进程。

实现这两个方面我现在运行良好。我在部署时遇到了另一个问题,它是 GPO 用户登录项的 UNC 参考。我确定我的链接已损坏,所以我编写了一个脚本来映射服务器位置,启动应用程序然后删除映射。

net use Y: /delete /y
net use Y: \\TE-ADMIN\netlogon /persistent:y
"Y:\TEG System Helper.exe"
net use Y: /delete /y

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 2012-10-14
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2011-01-02
    • 2011-11-26
    • 2011-06-15
    • 2023-03-25
    相关资源
    最近更新 更多