Как программно запустить клиентский терминал MetaTrader 4? - страница 2

 
FAQ:

я не знаю какие увас проблемы присутствуют, у меня проблем нет. терминал чудно запускается из внешних программ как с предустановленными настройками, так и из под сет файла...

смотрите в сторону "запуска от имени" возможно загвоздка здесь. 


Это вселяет оптимизм, что ошибка все-таки моя. Как только разберусь (или при новых идеях), обязательно приду сюда еще. Спасибо за диалог.
 
FAQ:

я не знаю какие увас проблемы присутствуют, у меня проблем нет. терминал чудно запускается из внешних программ как с предустановленными настройками, так и из под сет файла...

смотрите в сторону "запуска от имени" возможно загвоздка здесь. 


В качестве инсталлятора я использую Inno Script Studio 5.5.5 (это последняя версия), которая базируется на Inno Setup. Встроенная функция Exec(...), и почти такая же встроенная функция ShellExec(...) запускают MT4 с ошибкой, которую я описал выше.

При использовании обыкновенной (тестовой) .exe-программы (Delphi) API-функция ShellExec(...) запускает МТ4 правильно. Отсюда вывод - проблема в Inno Script (Setup).

Кто-нибудь знает, как преодолеть эту проблему? 

 
Мне удалось установить причину ошибки, которой посвящена эта тема. Напомню, проблема в том, что запуск МТ4 сторонней программой с помощью функции

ShellExecuteW(0,"open",pathMT4+"\\terminal.exe",portable,pathMT4,0);

производился с ошибкой. А именно, несмотря на наличие рабочего счета (который последним использовался в терминале) и сохраненного для него в МТ4 пароля, терминал при запуске требовал введение пароля для этого счета (счет был уже занесен в соответствующий регистрационный формуляр). Вместе с этим не высвечивается ни один счет из ранее зарегистрированных в терминале.

Поиск ошибки привел к неожиданному результату: правильно МТ4 запускается только в том случае, если НЕ пользоваться правами администратора (даже при запуске с помощью мыши, а не из внешней программы). В моей внешней программе предусмотрен запуск терминала именно с правами администратора. Как только я эти права удалил из внешней программы, все пошло нормально.

Но возник новый вопрос: почему МТ4 запускается неправильно от администратора? Для установления истины я провел эксперимент на точно такой же Windows 8.1, но не использовавшейся для разработок софта. Установил, что МТ4 запускается и с правами, и без прав администратора одинаково хорошо.

Вывод: с Windows что-то не то... Что именно? Кто подскажет?

Благодарю заранее.
 
Думаю проблема не в винде а из-за того что инсталлятор запускается из-под другого пользователя.
 
TheXpert:
Думаю проблема не в винде а из-за того что инсталлятор запускается из-под другого пользователя.

TheXpert , как выяснилось, сам инсталлятор здесь ни при чем. Забудем про инсталлятор. И никакие советники не присоединены, МТ4 в голом виде. Я запускаю МТ4 щелчком мыши! Первый раз - просто щелкаю, все нормально. Второй раз жму на правую кнопку мыши и запускаю МТ4 "с правами администратора" - получаю проблему.
 
dokpiknik:
Я запускаю МТ4 щелчком мыши! Первый раз - просто щелкаю, все нормально. Второй раз жму на правую кнопку мыши и запускаю МТ4 "с правами администратора" - получаю проблему.
Тогда не знаю.
 
TheXpert:
Тогда не знаю.


Еще одно уточнение. Я продолжил эксперименты. Никаких советников. Только демо-счета.

1. Запускаем МТ4 обыкновенно (без прав администратора). Если есть счет, закрываем МТ4. Если счета нет, открываем счет и закрываем МТ4.

2.  Запускаем МТ4 с правами администратора (правая кнопка мыши и "щит" с правами). Результат: ни одного живого счета не видно, только висит формуляр с требованием ввести пароль для последнего действовавшего счета во время запуска МТ4 без прав администратора.

Теперь делаем все наоборот.

1. Запускаем МТ4 с правами администратора (правая кнопка мыши и "щит" с правами). Если есть счет, закрываем МТ4. Если счета нет, открываем счет и закрываем МТ4.

2. Запускаем МТ4 обыкновенно (без прав администратора). Результат: ни одного живого счета не видно, только висит формуляр с требованием ввести пароль для последнего действовавшего счета во время запуска МТ4 с правами администратора.

Вывод: МТ4 помнит счета только одного режима запуска: с правами администратора или без. Счета альтернативного способа запуска МТ4 затираются.

Это вопрос, похоже, к разработчикам. МТ4, build 670. 

 
МТ5 ведет себя так же.
 

когда вы меняете права, меняется и целевая папка в формате : C:\Users\Administrator\AppData\Roaming\MetaQuotes\ ну и дальше, а если вы зашли в винду не под админом, то ессно что последние конфиги в ней не сохраняются. 

отсюда вывод - запускать МТ под тем юзером под которым зашли в винду. 

 
FAQ:

когда вы меняете права, меняется и целевая папка в формате : C:\Users\Administrator\AppData\Roaming\MetaQuotes\ ну и дальше, а если вы зашли в винду не под админом, то ессно что последние конфиги в ней не сохраняются. 

отсюда вывод - запускать МТ под тем юзером под которым зашли в винду. 


В Widows я имею статус администратора. Однако, думаю, Вам известно, что там есть еще один скрытый администратор, который всякий раз "пробуждается" (если включена UAC), когда запускается программа, скажем так, требующая внимания. Кроме того, этого скрытого администратора можно "разбудить", если после нажатия на исполняемом файле правой кнопкой мыши выбрать в контекстном меню "Запустить от имени администратора". Любая программа, если она даже не требует повышенных прав, должна правильно запускаться и от имени администратора тоже. Это азбука. Попробуйте запустить у себя один и тот же терминал двумя разными способами, как я описал в предыдущем посте. Буду рад, если описанный мной казус только у меня. Буду искать ошибку. Только что-то мне подсказывает, что там программный bug.

Спасибо. 

Причина обращения: