Sysnative для Vista RTM

359
fowlball1010

В настоящее время я пишу пакетный скрипт, который запускает процессы в операционной системе. Этот пакетный скрипт вызывается из тестового приложения, которое создано и работает как 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. Какие-нибудь мысли?

0
Переменная SysNative _is_ доступна в 64-разрядной версии Vista, поэтому она больше похожа на то, что WinSXS вашей Vista поврежден. Делает ли это на каждой машине с Vista или только на той, что вы тестировали? Вы уже пробовали установить новую версию Vista? Ƭᴇcʜιᴇ007 9 лет назад 0
Это происходит только на этой машине Vista. Скрипты работают на Vista x86 / x64 SP1 & SP2 и Vista x86 RTM. Это произошло только на этой конкретной машине. Я попытаюсь создать новую установку Vista и посмотреть, возникла ли у меня такая же проблема. fowlball1010 9 лет назад 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:

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

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 9 лет назад 0
хорошо, похоже, что Runtime отсутствует. Я не вижу в этом ничего полезного. Может быть, это ошибка, которая была исправлена ​​с помощью Sp1. magicandre1981 9 лет назад 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 9 лет назад 0