Windows.CopyFile создает временный локальный файл, в то время как источник и место назначения являются сетевыми папками? - PullRequest
2 голосов
/ 12 апреля 2011

У меня есть приложение D2007, которое использует Windows.CopyFile для копирования файлов MS Word и PowerPoint из одной сетевой папки в другую сетевую папку.Наша организация переходит на Windows 7 с Vista.Один из моих перенесенных пользователей получил сообщение об ошибке, которое отображало частичную локальную папку (C: \ Users \ (имя пользователя) \ ... \ A100203.doc) во время копирования.Кэширует ли функция CopyFile локальную копию документа при копировании из одной сетевой папки в другую сетевую папку или это прямая запись?Я никогда не видел эту ошибку раньше, и приложение работало в течение многих лет на Win95, Win 98, Win2000, WinXP и Vista.

Ответы [ 2 ]

7 голосов
/ 12 апреля 2011

Windows.CopyFile НЕ кэширует файл на вашем жестком диске ... вместо этого он инструктирует Windows обрабатывать копирование самого файла (а не управлять потоками в вашей собственной программе).Выходной файл буфера (место назначения) открывается, а входной буфер просто читается и записывается.По сути, это означает, что исходный файл помещается в системную память, затем выгружается в место назначения ... ни в коем случае не создается дополнительный файл кэша (это замедляет копирование файла).конкретная информация о вашей ошибке ... например, текст или фактический снимок экрана оскорбительного сообщения об ошибке.Это позволит людям давать более полезные ответы.

2 голосов
/ 12 апреля 2011

Пользователю, который запускает копию, потребуется доступ на чтение к оригиналу и доступ на запись к цели, независимо от кэширования (если пользователь имеет доступ на чтение к файлу, то файл может быть записан в локальный кэш, поэтому кэширование/ no-caching не имеет значения).

Базовая безопасность - запретить кому-либо иметь возможность копировать файлы / каталоги между машинами только потому, что атрибуты безопасности между машинами совместимы.

Есть еще немногобез полного текста сообщения об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...