В настоящее время я пишу пакетный скрипт, который запускает процессы в операционной системе. Этот пакетный скрипт вызывается из тестового приложения, которое создано и работает как 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. Какие-нибудь мысли?
Переменная SysNative _is_ доступна в 64-разрядной версии Vista, поэтому она больше похожа на то, что WinSXS вашей Vista поврежден. Делает ли это на каждой машине с Vista или только на той, что вы тестировали? Вы уже пробовали установить новую версию Vista?
Ƭᴇcʜιᴇ007 10 лет назад
0
Это происходит только на этой машине Vista. Скрипты работают на Vista x86 / x64 SP1 & SP2 и Vista x86 RTM. Это произошло только на этой конкретной машине. Я попытаюсь создать новую установку Vista и посмотреть, возникла ли у меня такая же проблема.
fowlball1010 10 лет назад
0
2 ответа на вопрос
1
magicandre1981
You miss a C++ Runtime. Run the Command prompt (cmd.exe) with admin rights and run this command:
SxsTrace Trace -logfile:SxsTrace.etl
Now run the script which causes the SideBySide error.
Go back to the command prompt press ENTER/RETURN to generate the SxsTrace.etl. Now type this:
Now open the SxSTrace.txt trace and look which VC++ runtime is missing.
If you are unsure, please upload the complete SxSTrace.txt to a cloud service/pastebin and post a link here.
Я выполнил шаги, как описано выше, и не уверен, какой VC ++ отсутствует, учитывая вывод. Результаты размещены на [ссылка] (http://pastebin.com/GaE4zE5P)
fowlball1010 10 лет назад
0
хорошо, похоже, что Runtime отсутствует. Я не вижу в этом ничего полезного. Может быть, это ошибка, которая была исправлена с помощью Sp1.
magicandre1981 10 лет назад
0
-1
Ƭᴇcʜιᴇ007
It only occurs on this Vista machine.
The SysNative variable is available in Vista 64-bit, so it sounds more like your Vista's WinSxS is corrupted.
The easiest fix for a messed up WinSxS is to just reinstall the OS from scratch.
An alternative is to forcefully take ownership of WinSxS and it's files, and then copy the files from a known-good Vista 64-bit machine, then change the ownership back, and perform an SFC /scannow.
More detail on performing those actions wound be outside of the scope of this question.
Я создал новую переустановку операционной системы Vista x64 RTM и столкнулся с той же проблемой при попытке выполнить те же действия, что и выше. Я запустил sxstrace в соответствии с предложением @ magicandre1981 и опубликовал результаты на pastebin (см. Комментарий к его предложению).
fowlball1010 10 лет назад
0