从调用 system() API 调用的程序运行时未找到 wlbs.exe 命令

从调用 system() API 调用的程序运行时未找到 wlbs.exe 命令

我遇到了这个奇怪的问题,它只在 Windows 2008 上出现过。在 Windows 2003 上,我运行正常。

我的 C++ 程序将使用 system() 命令调用一个 bat 文件。在批处理文件中,它将调用 wlbs 命令。但是,从程序运行批处理文件时,我看到以下错误:

‘wlbs’ 不被识别为内部或外部命令,也不是可运行程序或批处理文件。

我回显了 %PATH% 环境变量并看到 C:\Windows\System32 已经存在。

如果我从启动程序的同一用户帐户运行批处理文件,则在命令行上,批处理文件能够成功调用命令。我已经选择以管理员身份运行程序,并且我的登录会话也是管理员。

我更新了批处理文件以输出目录列表,如“dir C:\Windows\System32\*.exe > list.txt”,令人惊讶的是,当我从我的程序运行批处理文件时,在 list.txt 中,它能够列出除 wlbs.exe 之外的其他 exe(并且我怀疑还有很多其他 exe 也丢失了)。

但是,当我从命令行运行批处理文件时,我能够从上面生成的 list.txt 中看到 wlbs.exe。似乎只有从程序调用批处理文件时才会发生此问题。

我还尝试更新 C:\Windows\System32\wlbs.exe 的文件权限,但更新选项默认被禁用,尽管我已经以管理员身份登录系统。

如对上述问题有任何帮助,我们将不胜感激。

答案1

您的 Windows 2008 Server 可能是 64x 系统。在这样的系统中有两个不同的 system32 文件夹。对于 64 位系统上的 32 位可执行文件,%systemroot%\syswow64 就是它们所看到的 %systemroot%\system32。奇怪的世界。

为了快速修复,您只需将 wlbs.exe 程序复制到 %systemroot%\syswow64 文件夹即可。

相关内容