В настоящее время я пишу пакетный скрипт, который запускает процессы в операционной системе. Этот пакетный скрипт вызывается из тестового приложения, которое создано и работает как 32-разрядное приложение как в 32-разрядных, так и в 64-разрядных операционных системах. Пакетный скрипт написан следующим образом:

set EXE=%1
if exist %WINDIR%\sysnative\%1 ( set EXE=%WINDIR%\sysnative\%1 )
start "" "%EXE%"

Я использую переменную sysnative для запуска 64-битных приложений в 64-битных операционных системах и 32-битных приложений в 32-битных операционных системах. Я использую этот скрипт на операционных системах Vista и выше. Он работает правильно во всех операционных системах, кроме Windows Vista x64 RTM. При вызове я получаю «Приложение не удалось запустить, поскольку его параллельная конфигурация неверна. Пожалуйста, смотрите журнал событий приложения для более подробной информации. "

Я открыл 32-разрядную командную строку в Windows Vista x64 RTM и перешел к C:\Windows\sysnative и попытался оттуда вызвать notepad.exe, calc.exe и т.д. И всегда получал одну и ту же ошибку. Я также пытался удалить и переустановить распространяемые пакеты Microsoft Visual c++ 2008, но безрезультатно. Журналы событий приложений / безопасности / системы не содержат никаких информационных / предупреждений / сообщений об ошибках, относящихся к этому. Эта проблема встречается только в Windows Vista x64 RTM. Какие-нибудь мысли?

2 ответа2

1

Вы скучаете по C++ Runtime. Запустите командную строку (cmd.exe) с правами администратора и выполните следующую команду:

SxsTrace Trace -logfile:SxsTrace.etl

Теперь запустите скрипт, который вызывает ошибку SideBySide.

Вернитесь в командную строку и нажмите ENTER/RETURN, чтобы сгенерировать SxsTrace.etl. Теперь введите это:

sxstrace Parse -logfile:SxSTrace.etl -outfile:SxSTrace.txt

Теперь откройте трассировку SxSTrace.txt и посмотрите, какая среда выполнения VC++ отсутствует.

Если вы не уверены, пожалуйста, загрузите полный файл SxSTrace.txt в облачный сервис /pastebin и разместите ссылку здесь.

-1

Это происходит только на этой машине Vista.

Переменная SysNative доступна в 64-разрядной версии Vista, поэтому она больше похожа на то, что WinSxS в вашей Vista поврежден.

Самый простой способ исправить испорченный WinSxS - просто переустановить ОС с нуля.

Альтернативный вариант - принудительно завладеть WinSxS и его файлами, а затем скопировать файлы с заведомо исправного 64-разрядного компьютера Vista, затем снова изменить владельца и выполнить SFC /scannow .

Более подробная информация о выполнении этих действий выходит за рамки этого вопроса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .