Проблема MoveFileEx - PullRequest
       18

Проблема MoveFileEx

1 голос
/ 07 июня 2010
int i ;
DWORD dw ;
String^ Source = "c:\\Program\\test.exe" ;
String^ Destination = "c:\\Program Files" ; // move to program Files Folder

//pin_ptr<const wchar_t> WSource = PtrToStringChars(Source);
// pin_ptr<const wchar_t> WDestination = PtrToStringChars(Destination);

i = MoveFileEx(L"c:\\Program Files\\Program\\Test.exe",L"c:\\Program Files",MOVEFILE_REPLACE_EXISTING) ;
dw = GetLastError() ;

return 0; 

Состояние dw оценивается как 5, когда я запускаю программу.

Что за ошибка

Ответы [ 3 ]

3 голосов
/ 07 июня 2010

Код ошибки 5: доступ запрещен. Проверьте, достаточно ли у вас разрешений для каталога назначения.

BOOL WINAPI MoveFileEx(
  __in      LPCTSTR lpExistingFileName,
  __in_opt  LPCTSTR lpNewFileName,
  __in      DWORD dwFlags
);

MOVEFILE_REPLACE_EXISTING - Это значение нельзя использовать, если lpNewFileName или lpExistingFileName называет каталог.

В вашем случае местом назначения является каталог C: \ Program Files. Так что не получается.

2 голосов
/ 07 июня 2010

Введите в командной строке net helpmsg 5 .Это покажет вам значение ошибки.В моей системе это: «Доступ запрещен».

Просто подсказка: почему второй параметр не является путем к файлу?

0 голосов
/ 07 июня 2010

Ошибка 5: доступ запрещен. Эта ошибка может возникнуть, если

  • вы не имеете права писать в директорию назначения
  • Вы не имеете права перезаписывать существующий файл с тем же именем в целевом каталоге.

Я думаю, вы во втором случае: файл, который вы хотите перезаписать, заблокирован. Это исполняемый файл, он может быть запущен.

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