代表发布此问题GNU Octave尝试解决执行问题。我们最近遇到了一些 Windows 用户安装该软件后无法运行程序的情况。他们通常不会收到任何错误、消息或有用的反馈,而是双击启动图标并什么都没发生。
在最近的一个案例中,我们能够与用户合作,将问题缩小到他的系统无法执行 VBS 脚本。Octave 使用一个octave.vbs
文件(用 wscript 调用)来设置路径和环境变量并启动程序。
目前的诊断尝试:
- 用户在自己的桌面上创建了一个简单的测试脚本按照这个例子只是弹出一个系统对话框。他无法执行脚本,也没有弹出任何窗口或错误消息。
- 让他将文件移动到不同的位置,例如
C:\temp
,与 Octave 相同的文件夹等,但文件将无法执行。 - 通过从运行对话框运行 wscript 来验证其存在
wscript
,然后弹出“Windows 脚本宿主设置”对话框。 - 右键单击脚本文件并检查打开方式显示默认文件关联是与“基于 Microsoft Windows 的脚本宿主”,这是应该的(单击不会产生脚本执行。)
- 按住 Shift 键并右键单击并“以管理员身份运行”没有任何区别。
- 暂时禁用防病毒实时保护没有什么区别。
- 检查注册表项以确保没有 Enabled=0 键按照这篇文章(那没有)。
有人能提供一些关于哪些 Windows 或其他设置会阻止 vbs 脚本运行的指导吗?我们如何纠正这个问题?或者需要进一步检查哪些内容才能确定问题?Windows 中是否有一些新的默认安全设置或附带的更新可以解决这个问题?
用户正在运行 Windows 10 Home 和内置的 Windows Defender 以及最新更新。这不是托管系统。他从未故意/有意识地更改过任何特殊安全设置。版本信息如下:
- Windows 规格:
- 版本:Windows 10 家庭版
- 版本:2004
- 安装时间:2020-01-10
- 操作系统内部版本:19041.421
- 体验:Windows功能体验包120.2212.31.0
供参考,有关此问题的原始讨论主题可以在Octave 讨论论坛,但我认为我已经捕获了上述所有相关信息。
编辑:从维护者列表讨论中添加一条注释 - 对于因任何原因无法运行 vbs 文件的用户,该octave.bat
文件仍然存在于系统中,位于mingw64/bin
文件夹中。用户可以将桌面快捷方式更改为指向该文件而不是文件,octave.vbs
这样 Octave 就可以毫无问题地运行,尽管有时可能会有一些外观上的变化,并会出现额外的命令提示符窗口。
EDIT2:仅供后人参考 - 自 Octave 7 以来,不再使用 vbs 脚本来启动程序。octave-launch.exe
而是使用文件。.vbs
和.bat
启动器仍然存在,但此问题中描述的 VBS 启动问题现在不再是问题。
答案1
根据ProcMon 日志,发现 wscript.exe 正在加载 4 个防病毒软件模块(3 个 Avast 和 1 个 McAfee IOfficeAntiVirus 模块)。
McAfee IOfficeAntiVirus 模块是最有可能的罪魁祸首,它阻止了wscript.exe
脚本的执行。
完全卸载 McAfee 应该可以解决该问题。
答案2
诊断
确保它"%SystemRoot%\System32\WScript.exe"
存在。您可以使用文件资源管理器检查(按WIN+ E) - 在文件资源管理器的文本框中输入路径%SystemRoot%\System32
以查看该目录,然后在那里查找WScript.exe
。
打开命令窗口(按WIN+R然后输入cmd.exe
)并输入以下内容:
ftype | find /I "VBS"
这应该给出结果:
VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*
然后,检查
assoc .vbs
应该显示:
.vbs=VBSFile
使固定
如果以上任何一项设置不正确,则您的 VBS 文件将无法运行。要修复文件类型 (FTYPE),只需运行以下命令
ftype VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*
要修复关联,请运行命令
assoc .vbs=VBSFile
如果所有设置都正确但问题仍然存在,则可能是反恶意软件阻止了执行 - 在这种情况下,请查看 w32sh 给出的答案。
答案3
我不知道这是否有帮助,但我想分享我在将设备升级到以下规格后解决类似症状的经验
- 版本 Windows 10 Pro
- 版本 2004
- 操作系统内部版本 19041.450
- 体验Windows功能体验包120.2212.31.0
该设备只有一个 VBScript,它应该在启动时运行,但在升级后立即停止运行。还值得一提的是,安装以前的升级时该脚本并不存在,因此目前我无法判断该问题是否特定于 2004 版本,或者这是否是 W10 升级普遍存在的问题。
观察到的问题是,Notepad++ 不是在启动时执行,而是打开一个显示脚本内容的页面。我还注意到,升级后,与保存脚本的文件关联的图标已更改为 Notepad++ 图标。
因此,我去检查 W10 UI 中的文件关联(开始 > 设置 > 应用程序 > 默认应用程序 > 按文件类型选择默认应用程序),在这里我可以看到 .vbs 扩展名已分配给“基于 Microsoft Windows 的脚本宿主”。然后我再次手动选择“基于 Microsoft Windows 的脚本宿主”更改了默认应用程序,然后文件突然开始显示 Microsoft 生成的 .vbs 项目图标。
从那里我能够在启动时手动和自动运行脚本。
附带说明一下,当直接通过 Excel VBA 模块调用时,我还发现我的 AV 阻止了一些 PowerShell 命令(但不是全部),但这从未影响上述脚本的执行。
答案4
您应该检查是否有其他防病毒软件阻止您的 vbs 文件运行!