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