我正在尝试从Windows 7 64位系统上的.bat或.jar文件运行“netsh mbn show interfaces”,但每次运行我的文件时,都会导致“找不到以下命令mbn show interfaces ”
当我在cmd.exe提示符中运行相同的命令时,结果是正确的并且符合预期。 当我们运行/?我们在可用命令中看到“mbn”。当我们从.bat或.jar输出相同的结果时,我们在netsh的可用命令中看不到“mbn”命令。
有人知道发生了什么吗? 我们知道有2个netsh.exe文件,一个在sys32中,另一个在syswow64中。
感谢所有帮助。
答案 0 :(得分:4)
我们解决了这个问题:
运行命令“netsh mbn show interface”时,cmd作为64位操作运行。 从应用程序运行命令(即32位)时,cmd作为32位操作运行。并且mbn-context在32位不可用。
在Windows 64bit操作系统中,存在一个幕后功能:文件系统重定向。 含义:64位进程将调用等效的32位进程。
解决方法是使用csharp脚本或其他可以覆盖文件系统重定向的脚本:
IntPtr ptr = IntPtr.Zero;
Wow64DisableWow64FsRedirection(ref ptr);
// -- your proces information here --
Wow64RevertWow64FsRedirection(ptr);
//always revert the operation.
并解决了它!