【问题标题】:Does Windows.CopyFile create a temporary local file while source and destination are network shares?Windows.CopyFile 是否在源和目标是网络共享时创建临时本地文件?
【发布时间】:2011-08-04 02:01:58
【问题描述】:
我有一个 D2007 应用程序,它使用 Windows.CopyFile 将 MS Word 和 PowerPoint 文件从一个网络文件夹复制到另一个网络文件夹。我们的组织正在从 Vista 迁移到 Windows 7。我的一个迁移用户收到一条错误消息,在复制过程中显示部分本地文件夹 (C:\Users\(username)\...\A100203.doc)。 CopyFile 函数在从一个网络文件夹复制到另一个网络文件夹时是否缓存文档的本地副本,还是直接写入?我以前从未见过此错误,并且该应用程序已在 Win95、Win 98、Win2000、WinXP 和 Vista 上运行多年。
【问题讨论】:
标签:
delphi
winapi
windows-7
【解决方案1】:
启动副本的用户将需要对原始文件的读取权限和对目标的写入权限,无论缓存如何(如果用户对文件具有读取权限,则可以将文件写入本地缓存,因此缓存/no-caching 无关紧要)。
仅仅因为机器之间的安全属性兼容,就不允许某人在机器之间复制文件/目录是基本安全。
没有完整的错误消息文本,没什么好说的。
【解决方案2】:
Windows.CopyFile 不会将文件缓存在您的硬盘上...相反,它会指示 Windows 处理文件本身的复制(而不是您在自己的程序中管理流)。输出文件缓冲区(目标)打开,输入缓冲区简单地读写。本质上,这意味着源文件被假脱机到系统内存中,然后被卸载到目标......在任何时候都不会创建额外的缓存文件(这会减慢文件复制速度)。
您需要提供有关您的错误的更具体信息...例如有问题的错误消息的文本或实际屏幕截图。这将使人们能够提供更有用的答案。