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

我有这个奇怪的问题只在Windows 2008上看到。在Windows 2003上,我运行良好。

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

“wlbs”不被识别为内部或外部命令,可操作程序或batch file。

我回应%PATH%环境variables,看到C:\ Windows \ System32已经在那里。

如果我从命令行启动程序的相同用户帐户运行batch file,则batch file能够成功调用该命令。 我已经select了要以pipe理员身份运行的程序,而且我的login会话也是pipe理员。

我更新了batch file以输出目录列表,比如“dir C:\ Windows \ System32 \ *。exe> list.txt”,而且令人惊讶的是,在list.txt中,它能够列出除wlbs以外的其他exe .exe(我怀疑还有一堆其他exe文件也没有),当我从程序运行batch file。

但是,当我从命令行运行batch file时,我能够从上面生成的list.txt中看到wlbs.exe。 看来只有在从程序中调用batch file时才会出现这个问题。

我也尝试更新C:\ Windows \ System32 \ wlbs.exe的文件权限,但更新选项在默认情况下处于禁用状态,尽pipe我已经以系统pipe理员身份login。

任何帮助上述问题将不胜感激。

你的Windows 2008服务器可能是一个64x系统。 在这样的系统中有两个不同的system32文件夹。 对于64位系统上的32位可执行文件,%systemroot%\ syswow64就是他们看到的%systemroot%\ system32。 陌生的世界。

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