在Vista RTM上系统化


0

我目前正在编写一个批处理脚本,它将在操作系统上启动进程。从测试应用程序调用此批处理脚本,该测试应用程序在32位和64位操作系统上作为32位应用程序构建和运行。批处理脚本编写如下:

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以外的所有操作系统上正常运行。当被调用时,我收到“应用程序无法启动,因为其并行配置不正确。请参阅应用程序事件日志以获取更多详细信息。”

我在Windows Vista x64 RTM上打开了32位命令行,并导航到C:\ Windows \ sysnative,并尝试从此处调用notepad.exe,calc.exe等,始终收到相同的错误。我也尝试过卸载并重新安装Microsoft Visual c ++ 2008 Redistributable Packages,但无济于事。应用程序/安全性/系统事件日志不包含与此有关的任何信息/警告/错误消息。仅在Windows Vista x64 RTM上会遇到此问题。有什么想法吗?


该SysNative变量在Vista 64位可用,所以它听起来更像是你的Vista的WinSxS文件已损坏。它是在每台Vista机器上还是仅在您测试过的那台机器上执行此操作?您是否在全新的Vista安装上尝试过它?
2014年

它仅在此Vista计算机上发生。该脚本可在Vista x86 / x64 SP1和SP2以及Vista x86 RTM上运行。它仅在此特定计算机上发生。我将尝试创建新的Vista安装并查看是否遇到相同的问题。
fowlball1010年

Answers:


1

您会错过C ++运行时。运行具有管理员权限的命令提示符(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,然后在此处发布链接。


我运行了上述步骤,不确定给出的输出是哪个VC ++。结果发布在链接
fowlball1010

好的,好像没有运行时丢失。我真的看不到任何有用的东西。也许这是Sp1修复的错误。
magicandre1981 2014年

-1

它仅在此Vista计算机上发生。

SysNative变量在Vista 64位版本中可用,因此听起来更像是Vista的WinSxS已损坏。

弄乱WinSxS的最简单解决方法是从头开始重新安装操作系统。

另一种选择是强制获取WinSxS及其文件的所有权,然后从已知良好的Vista 64位计算机上复制文件,然后将所有权更改回并执行SFC /scannow

关于执行这些动作的更多详细信息超出了此问题的范围。


我创建了Vista x64 OS RTM的新重新安装,并在尝试执行与上述相同的步骤时遇到了相同的问题。我已经按照@ magicandre1981的建议运行了sxstrace,并将结果发布到pastebin上(请参阅对他的建议的评论)。
fowlball1010 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.