Скачать MetaTrader 5

Как копировать/переместить файл вне директории терминала?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Занеси ветку в избранное. Отслеживай изменения еще быстрее!
Sheer
219
Sheer 2015.09.24 20:08 

Использовал CopyFileW из kernel32.dll но копировать так и не получилось. 

Пробовал на mql4.

#import "kernel32.dll"

bool CopyFileW(string lpExistingFileName, string lpNewFileName, bool failIfExists);

#import

CopyFileW("C:\Users\User1\AppData\Roaming\MetaQuotes\Terminal\90271F5A6EF646EE3A8805FDEE834716\tester\files\text.txt","D:\Alp",0);


Sergey Eremin
4362
Sergey Eremin 2015.09.24 20:54  
Sheer:

Использовал CopyFileW из kernel32.dll но копировать так и не получилось. 

Пробовал на mql4.

#import "kernel32.dll"

bool CopyFileW(string lpExistingFileName, string lpNewFileName, bool failIfExists);

#import

CopyFileW("C:\Users\User1\AppData\Roaming\MetaQuotes\Terminal\90271F5A6EF646EE3A8805FDEE834716\tester\files\text.txt","D:\Alp",0);


Попробуйте так (не проверил, но бросилось в глаза):

...
CopyFileW("C:\\Users\\User1\\AppData\\Roaming\\MetaQuotes\\Terminal\\90271F5A6EF646EE3A8805FDEE834716\\tester\\files\\text.txt","D:\\Alp",0);
...
Sheer
219
Sheer 2015.09.24 21:09  
Sergey Eremin:

Попробуйте так (не проверил, но бросилось в глаза):

Спасибо , и так пробовал, но так тоже не работает.
Комбинатор
15923
Комбинатор 2015.09.24 21:35  
Sheer:
Спасибо , и так пробовал, но так тоже не работает.
Вроде выглядит правильно. Почитайте про rtlgetlastwin32error и посмотрите какую ошибку функция возвращает
Sheer
219
Sheer 2015.09.24 21:46  
Комбинатор:
Вроде выглядит правильно. Почитайте про rtlgetlastwin32error и посмотрите какую ошибку функция возвращает

Я немного по другому смотрел значение ошибки Print("CopyFileW error#",kernel32::GetLastError()," mql5 error#",::GetLastError());

И возвращало либо 3, либо 123 (именно от кернел32), в зависимости от варианта указания пути...

Не могу найти, где посмотреть описание ошибок? 

Koldun Zloy
228
Koldun Zloy 2015.09.25 06:56  
Для того чтобы писать в корень диска нужны права администратора.
Sergey Eremin
4362
Sergey Eremin 2015.09.25 08:00  
Sheer:

Я немного по другому смотрел значение ошибки Print("CopyFileW error#",kernel32::GetLastError()," mql5 error#",::GetLastError());

И возвращало либо 3, либо 123 (именно от кернел32), в зависимости от варианта указания пути...

Не могу найти, где посмотреть описание ошибок? 

3:

ERROR_PATH_NOT_FOUND

3 (0x3)

The system cannot find the path specified.

123:

ERROR_INVALID_NAME

123 (0x7B)

The filename, directory name, or volume label syntax is incorrect.

Источник: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

Алгоритм поиска: в гугле вбиваем название функции (CopyFileW), находим её описание. В описании будет упоминание GetLastError(), идём в описание GetLastError() и там находим ссылки на коды ошибок :)

System Error Codes (0-499) (Windows)
  • msdn.microsoft.com
The information on this page is intended to be used by programmers so that the software they write can better deal with errors. If you are an end-user that is experiencing difficulty with an application you are installing or running, contact customer support for the software that is displaying the error message. To obtain support for a...
Sheer
219
Sheer 2015.09.25 19:36  
Sergey Eremin:

3:

123:

Источник: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

Алгоритм поиска: в гугле вбиваем название функции (CopyFileW), находим её описание. В описании будет упоминание GetLastError(), идём в описание GetLastError() и там находим ссылки на коды ошибок :)

Спасибо, но теперь выдает ошибку 5, Access is denied.

Запускал терминал от админа, не помогло, что еще можно попробовать?

Sergey Eremin
4362
Sergey Eremin 2015.09.25 20:05  
Sheer:

Спасибо, но теперь выдает ошибку 5, Access is denied.

Запускал терминал от админа, не помогло, что еще можно попробовать?

Хмм, даже не знаю, что ещё посоветовать. Явно ошибка в отсутствии прав доступа.

Может рассмотреть вариант копирования файлов куда-нибудь, куда будут права доступа? Например, в  "C:\\Users\\User1\\AppData\\Roaming\\Alp". Или, может, открыть доступ к D:\\Alp (в свойствах папки, хотя не уверен в успехе такой затеи).

Ну или понизить уровень UAC, хотя это дурная идея (если непонятно о чём речь, то гугл -> "понизить уровень UAC").

Renat Akhtyamov
4824
Renat Akhtyamov 2015.09.25 23:43  
Sheer:

Спасибо, но теперь выдает ошибку 5, Access is denied.

Запускал терминал от админа, не помогло, что еще можно попробовать?

Админ тут не причем. Дайте необходимые права на нужную паку для "User1".
Ramiz Mavludov
26673
Ramiz Mavludov 2015.09.26 00:02  
new-rena:
Админ тут не причем. Дайте необходимые права на нужную паку для "User1".
Если не получится дать полные права, то нужно будет сначала владельца сменить и указать своё имя пользователя и уже потом разрешить самому себе делать что угодно с этой папкой) 
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий