Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 10 (http://forum.oszone.net/forumdisplay.php?f=118)
-   -   [решено] Не работает DOS-приложение (Windows 10 x32) (http://forum.oszone.net/showthread.php?t=311358)

netripper 09-02-2016 14:33 2604112

Не работает DOS-приложение (Windows 10 x32)
 
Есть старая DOS-программа, запускается батником "foxprol -t mes_o", необходима по работе и без неё никак. Чтобы она работала в Windows 7 x32, я прописывал при настройке системы в переменных средах PATH путь к папке FOX20: C:\FOX20. С Windows 10 x32 такой вариант не прокатывает:

Можно ли настроить работу этой DOS-программы средствами Windows 10?

Казбек 09-02-2016 16:44 2604175

netripper,
В режиме совместимости запускать пробовали??

netripper 10-02-2016 15:34 2604574

Цитата:

Цитата Казбек
В режиме совместимости запускать пробовали?? »

спасибо! Установил режим совместимости Windows XP SP2 для foxprol.exe и заработало.

netripper 23-05-2017 09:58 2738876

Возникла новая проблема: обнаружил, что DOS-программа не хочет запускаться в том случае, если расположена на сетевом диске. Если на локальном - всё норм, а если на сетевом, то пишет, что не найден файл MES_O.PRG

Iska 23-05-2017 10:11 2738878

Цитата:

Цитата netripper
не хочет запускаться »

Не «не хочет». Она вполне себе запускается.

netripper, покажите содержимое config.fp.

netripper 23-05-2017 10:23 2738887

EXACT= OFF
HEADING=OFF
F1=" "
F2=" "
F3=" "
F4=" "
F5=" "
F6=" "
F7=" "
F8=" "
F9=" "
F10=" "
MVARSIZ=16
MVCOUNT=2000


Iska 23-05-2017 12:33 2738922

В таком случае непонятно — откуда берётся команда на запуск mes_o.prg. Может быть, там рядом есть файл foxprol.pif или ярлык, и она указана в нём параметром?

netripper 23-05-2017 13:08 2738930

Цитата:

Цитата Iska
откуда берётся команда на запуск mes_o.prg »

из батника же (см. первый пост)

Iska 23-05-2017 14:16 2738954

netripper, ясно. Покажите содержимое текущего каталога для пакетного файла.

netripper 23-05-2017 14:27 2738964

Цитата:

Цитата Iska
содержимое текущего каталога »


Iska 23-05-2017 15:17 2738985

«На предыдущем допросе вы, гражданка, показывали, что сиську двое просило»™ На предыдущем скриншоте был диск W:. Проясните этот момент.

Где находится foxprol.exe?

Покажите содержимое пакетного файла, содержащего команду «foxprol -t mes_o».

netripper 23-05-2017 15:27 2738990

Цитата:

Цитата Iska
Где находится foxprol.exe »

D:\FOX20

Цитата:

Цитата Iska
содержимое пакетного файла »



Цитата:

Цитата Iska
На предыдущем скриншоте был диск W:. Проясните этот момент. »

Не обращайте на это внимание: в папке, скажем так, "рабочей" версии программы (в которую вносились данные годами) слишком много файлов, поэтому пришлось бы делать большое количество скриншотов для отображения содержимого (как Вы попросили), поэтому я на другом сетевом диске расшарил "чистую" версию программы.

Iska 23-05-2017 15:38 2738997

Добавьте в начало этого пакетного файла команды:
Код:

echo [%CD%]
pause

затем запустите его как обычно и покажите результат на моменте паузы.

netripper 23-05-2017 15:50 2739001


Petya V4sechkin 23-05-2017 17:59 2739057

netripper, сделайте лог Process Monitor следующим образом:
  1. запустите Process Monitor;
  2. попытайтесь запустить DOS-программу, чтобы получилась ошибка;
  3. сохраните лог: меню File -> Save -> PML-формат;
  4. заархивируйте и выложите на любой файлообменник, например dropmefiles.com.

Iska 23-05-2017 18:20 2739063

Так. Надо полагать, не в пакетном файле дело. Попробуем зайти с другой стороны — что видится внутри foxprol.exe. Замените ранее добавленные строки на
Код:

echo [%CD%]
foxprol.exe -t
pause
exit

Добавьте в конец файла config.fp команду:
Код:

command=? sys(5), sys(2003), sys(2004), sys(2019)
Скрытый текст
затем запустите пакетный файл как обычно и покажите совместный скриншот окна командной строки и foxprol.exe в момент паузы (как в предыдущем сообщении). Собственно, нас будет интересовать нижняя строка:
Скрытый текст

netripper 24-05-2017 09:54 2739189

Цитата:

Цитата Iska
Надо полагать, не в пакетном файле дело »

Конечно же, не в пакетном - дело в Windows 10. Смотрите: есть сетевой диск на сервере с dos-программой, с этого диска с программой успешно работают все пользователи локальной сети (Windows 7, XP), достаточно лишь прописать им в PATH путь к папке FOX20 (с foxprol.exe). Пакетный файл - один для всех, папка FOX20 на всех компьютерах - идентична. И лишь в случае с десяткой возникает ошибка (а раньше и на ней всё было норм).

Petya V4sechkin, http://dropmefiles.com/mNJPI

Petya V4sechkin 24-05-2017 11:50 2739226

netripper, видимо, глюк при передаче управления cmd.exe → csrstub.exe → ntvdm.exe (у cmd текущий каталог U:\, а у csrstub и ntvdm становится \\Server\dop0315\, но DOS не работает с UNC-путями).

Попробуйте запускать так:
Код:

foxprol -t U:\mes_o.prg

netripper 24-05-2017 13:16 2739240

Petya V4sechkin, [spoiler][spoiler]

Petya V4sechkin 24-05-2017 14:07 2739250

netripper, но этот файл ведь существует?

Тогда такой вариант.

netripper 24-05-2017 14:18 2739253

Petya V4sechkin, существует конечно же

Charg 24-05-2017 14:31 2739258

Цитата:

Цитата netripper
Смотрите: есть сетевой диск на сервере с dos-программой, с этого диска с программой успешно работают все пользователи локальной сети (Windows 7, XP), достаточно лишь прописать им в PATH путь к папке FOX20 (с foxprol.exe). Пакетный файл - один для всех, папка FOX20 на всех компьютерах - идентична. И лишь в случае с десяткой возникает ошибка (а раньше и на ней всё было норм). »

Так папка на сетевом диске или на каждом компьютере? Или замечание о том что папка идентична просто о том что каждый пользователь видит её одинаково?

netripper 24-05-2017 14:39 2739260

Charg, папка с DOS-программой на сетевом диске называется dop0315, папка FOX20 на каждом компьютере

Цитата:

Цитата Petya V4sechkin
Тогда такой вариант. »

Тоже не помогло.

Petya V4sechkin 24-05-2017 16:12 2739274

netripper, сделайте повторный лог при выполнении:
Код:

foxprol -t U:\mes_o.prg

netripper 24-05-2017 17:21 2739284

Petya V4sechkin, http://dropmefiles.com/kf8kR

Казбек 24-05-2017 17:41 2739289

Цитата:

Цитата netripper
Пакетный файл - один для всех, папка FOX20 на всех компьютерах - идентична. И лишь в случае с десяткой возникает ошибка (а раньше и на ней всё было норм). »

Сделайте идентичный лог с машины, где всё работает нормально, и прикрепите его.

И используйте тег [spoiler] для скрытия своих изображений: так намного удобней читать тему, а люди с ограниченным трафиком скажут вам отдельное спасибо.

Пример

Инструкция

netripper 24-05-2017 18:08 2739296

Цитата:

Цитата Казбек
Сделайте идентичный лог с машины, где всё работает нормально »

http://dropmefiles.com/ebe6T

Казбек 24-05-2017 18:38 2739307

Странно. Сначала всё ищется правильно, а потом перебрасывает на диск C:
Скрытый текст

Petya V4sechkin 24-05-2017 18:39 2739308

Цитата:

Цитата netripper
Тоже не помогло.

Давайте определимся, вы задали параметр EnableLinkedConnections и перезагрузились?

Проблема явно связана с UAC (в последнем логе из Windows 7 всё работает, потому что EnableLUA = 0, в результате cmd.exe сразу запускает ntvdm.exe без "прокладки" csrstub.exe и без потери сетевого диска).

P.S. Сетевой диск теряется из-за этого:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE
RUNASADMIN WINXPSP3

То есть, в свойствах FOXPROL.EXE на вкладке Совместимость у вас включен флажок "Выполнять эту программу от имени администратора". Но access token администратора отличается, поэтому диск отваливается.
Соответственно, три варианта решения:
  1. снять флажок "Выполнять эту программу от имени администратора";
  2. или присвоить EnableLinkedConnections = 1 и перезагрузиться;
  3. или обнулить EnableLUA и перезагрузиться (в этом случае будут побочные эффекты: неработающие приложения Metro).

E-zheg 24-05-2017 18:43 2739309

Цитата:

Цитата Казбек
а люди с ограниченным трафиком скажут вам отдельное спасибо »

Не скажут, потому что картинки под спойлерами грузятся точно так же, просто "не показываются". Если не используется динамическая подгрузка содержимого, а здесь она не используется

netripper 25-05-2017 08:39 2739422

Цитата:

Цитата Petya V4sechkin
Соответственно, три варианта решения: »

1. не помогло;
2. не помогло;
3. после обнуления EnableLUA и перезагрузки при попытке запуска:

Petya V4sechkin 25-05-2017 08:45 2739424

netripper, покажите содержимое разделов реестра:
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE

netripper 25-05-2017 09:17 2739435

Petya V4sechkin,
Скрытый текст

Petya V4sechkin 25-05-2017 10:07 2739447

netripper, странно, что ошибка изменилась.
Кстати, эта учётная запись с правами пользователя или администратора?

Сделайте ещё раз лог Process Monitor.

netripper 25-05-2017 10:24 2739450

Petya V4sechkin, администратор
http://dropmefiles.com/hKtqT

Petya V4sechkin 25-05-2017 10:47 2739460

netripper, удалите параметры:
  • HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE
Затем включите:
Цитата:

Цитата netripper
режим совместимости Windows XP SP2 для foxprol.exe и заработало.


netripper 25-05-2017 10:54 2739463

Цитата:

Цитата Petya V4sechkin
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE »

у меня здесь D:\FOX20\FOXPROL.EXE нет

Petya V4sechkin 25-05-2017 10:58 2739464

netripper, а в логе есть:
Цитата:

cmd.exe 8932 RegQueryValue HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\D:\FOX20\FOXPROL.EXE SUCCESS Type: REG_SZ, Length: 26, Data: ~ RUNASADMIN

netripper 25-05-2017 11:14 2739469

Цитата:

Цитата Petya V4sechkin
а в логе есть »

вероятно, был невнимателен...
Всё из реестра удалил, режим совместимости XP SP2 установил - та же ошибка (NTVDM has encountered a System Error).

Petya V4sechkin 25-05-2017 16:08 2739572

Цитата:

Цитата netripper
после обнуления EnableLUA и перезагрузки при попытке запуска

А если снова включить EnableLUA, программа будет запускаться?
Это полтергейст какой-то.

netripper 25-05-2017 16:40 2739581

Цитата:

Цитата Petya V4sechkin
А если снова включить EnableLUA, программа будет запускаться? »

Нет. Если для foxprol.exe убрана галочка "Выполнять с правами администратора", то получаю "NTVDM has encountered a System Error", если стоит, то "File 'MES_O.PRG' does not exist"

Petya V4sechkin 25-05-2017 18:06 2739604

netripper, а у вас свежие обновления для Windows установлены?
Например, в этой теме пишут, что обновление KB3194798 всё поломало, а после KB4013429 всё снова заработало.

netripper 25-05-2017 18:34 2739613

Цитата:

Цитата Petya V4sechkin
а у вас свежие обновления для Windows установлены? »

Да.

Казбек 25-05-2017 19:24 2739633

Цитата:

Цитата netripper
Да. »

Выполните в PowerShell:
Код:

Get-WmiObject -Class "win32_quickfixengineering"
Покажите скрин.

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

cd %userprofile%
wmic qfe list full /format:htable > update.htm

Прикрепляете файл update.htm, который находится в корне папке вашего профиля.

netripper 29-05-2017 14:41 2740500

Казбек,

Казбек 29-05-2017 19:41 2740589

netripper,

Попробуйте установить.

netripper 01-06-2017 13:12 2741323

Казбек, "Обновление неприменимо к Вашему компьютеру"

netripper 18-08-2017 15:07 2759257

Цитата:

Цитата netripper
Возникла новая проблема: обнаружил, что DOS-программа не хочет запускаться в том случае, если расположена на сетевом диске. Если на локальном - всё норм, а если на сетевом, то пишет, что не найден файл MES_O.PRG »

В общем, проблема была не в Windows 10 и решилась изменением пути к рабочей папке в ярлыке программы: вместо пути вида \\comp\folder я указал букву сетевого диска - оказалось что иначе FOXPRO путь не понимает.

Petya V4sechkin 18-08-2017 20:08 2759314

Цитата:

Цитата netripper
пути к рабочей папке в ярлыке программы: вместо пути вида \\comp\folder я указал букву сетевого диска

До такой очевидной вещи (что проблема в ярлыке) я как-то даже не задумался (и вообще не заметил наличие ярлыка).
Хотя первоначальная идея была правильная:
Цитата:

Цитата Petya V4sechkin
у cmd текущий каталог U:\, а у csrstub и ntvdm становится \\Server\dop0315\, но DOS не работает с UNC-путями

но затем мысль ушла куда-то не туда. Facepalm.


Время: 13:37.

Время: 13:37.
© OSzone.net 2001-