Можно ли запустить программу в режиме Windows XP непосредственно из командного файла в Windows 7?

1046
Teo Zec

У меня установлена ​​Windows 7 Ultimate с режимом Windows XP .

В моей операционной системе (Windows 7) у меня есть командный файл, который выполняет некоторые команды. Я должен также выполнить три программы, которые установлены в моем режиме Windows XP (Windows 'debug.exe и две другие программы). Есть ли способ запустить их прямо из моего командного файла?

Спасибо!

1
Из CMD вы можете запустить ссылку на ярлык программы / ярлык на рабочем столе в папке `C: \ Users`, хотя` start / wait` не ждет. AFH 10 лет назад 0
@AFH Какую команду мне использовать? Teo Zec 10 лет назад 0
Вы можете вызвать ссылку, как любой файл `exe`, например,` C: \ Users \ UserName \ Desktop \ DeskTopName.lnk`. Вы можете передавать параметры, если вы разрешили их в строке запуска ссылки. Вы можете использовать `start`, но опция` / wait` ожидает, пока программа не будет запланирована по ссылке, а не до конца целевой программы. AFH 10 лет назад 0
У меня нет режима XP для тестирования, но не могли бы вы связать задачу в Win 7 с запуском программы XP и настроить задачу на запуск в режиме совместимости, а затем поместить задачу в свой пакетный файл? fixer1234 10 лет назад 0
@AFH Да, но я не могу скопировать ссылку из режима XP на мой компьютер с Windows 7, так как файл lnk будет указывать на файл, который не существует на моем диске Windows 7 C Teo Zec 10 лет назад 0
@ fixer1234 Программа установлена ​​в режиме Windows XP, и я не знаю, как установить задачу для ее запуска с хост-ОС. Teo Zec 10 лет назад 0
Этот метод используется в качестве обходного пути для программ, которые требуют авторизации UAC. Есть много полезных ссылок, если вы ищете в Windows, задачи и UAC. Вот один из них: http://www.7tutorials.com/use-task-scheduler-launch-programs-without-uac-prompts. У меня сейчас нет доступа к Windows, но одна из настроек - запустить задачу в режиме совместимости. (Возможно, вам не понадобится настройка «Запуск от имени администратора».) fixer1234 10 лет назад 0
@ fixer1234 Спасибо за предложение, но на самом деле мне не нужно запускать программу без UAC. Я хочу запустить 16-разрядную программу, которая не может работать в 64-разрядной версии Windows 7, но может работать в режиме Windows XP. Teo Zec 10 лет назад 0
Правильно, цель UAC - это всего лишь одно из применений техники. Определение задачи - это способ запуска программы с использованием разных характеристик. Вы можете настроить запуск задачи в режиме совместимости, чего нельзя делать в режиме XP. fixer1234 10 лет назад 0
Если вы разместите ссылку на своем рабочем столе или в меню «Пуск» (или где-либо еще, в этом отношении), то вы установите режим совместимости для XP в свойствах ссылки. Это то, что я предполагал, что ты делал. AFH 10 лет назад 0
@AFH Я не хочу запускать его в режиме совместимости, но в режиме Windows XP. Вы можете найти больше информации об этом здесь: http://windows.microsoft.com/en-us/windows7/products/features/windows-xp-mode Teo Zec 10 лет назад 0
Хорошо, но если вы хотите вызвать его из пакетного файла вместе с собственными программами W7, тогда я не вижу, как вы можете сделать это без использования режима совместимости. Если вы хотите вызывать программы в виртуальной машине, вам нужно будет контролировать выполнение через файлы команд / флагов в общем каталоге. AFH 10 лет назад 0
@AFH Вот чего я хочу. Мне нужно что-то сделать с моим файлом в Windows 7, а затем сделать некоторые другие вещи с некоторыми программами в режиме Windows XP. Является ли это возможным? Или мне нужно каждый раз вручную вызывать командный файл в моем режиме Windows XP? Teo Zec 10 лет назад 0

1 ответ на вопрос

2
AFH

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

В XP у вас постоянно работает командная оболочка с циклом ядра:

:Loop sleep 10 if not exist \XPcommand.cmd goto Loop del \XPresponse.txt call \XPcommand.cmd > \XPcommand.txt ren \XPcommand.txt XPresponse.txt del \XPcommand.cmd goto Loop 

Вы можете добавить запись в журнал и в противном случае улучшить сценарий. После callкоманды вы можете добавить echo Completion status = %errorlevel% >> \XPcommand.txtи подобрать это в пост-анализе.

Всякий раз, когда вы хотите выполнить команду XP из W7, вызывайте cmdскрипт с командой, переданной в его параметрах и содержащей: -

del \XPresponse.txt echo %* > \XPcommand.cmd :Loop sleep 2 if exist \XPcommand.cmd goto Loop 

Когда вы вернетесь из этого, вы можете проанализировать XPresponse.txtи выполнить любую последующую обработку. Удаление не обязательно XPresponse.txt, но оно просто гарантирует, что никакие предыдущие ответы не могут перепутать любые проверки W7.

Существуют бесчисленные версии sleep.exe, которые приостанавливаются на несколько секунд, включая две от MS, в службах для Unix и в Windows Resource Kit . Количество секунд для выбора - это баланс между отзывчивостью и накладными расходами на опрос. Я предложил более короткий интервал в W7, потому что опрос выполняется только во время выполнения команды XP, а в XP - в любое другое время.

Похожие вопросы