5

我正在尝试从 Windows 7 64 位系统上的 .bat 或 .jar 文件运行“netsh mbn show interfaces”,但每次运行我的文件时,都会导致“找不到以下命令 mbn show interfaces”。

当我在 cmd.exe 提示符下运行相同的命令时,结果正确且符合预期。当我们运行 /? 我们在可用命令中看到“mbn”。当我们从 .bat 或 .jar 输出相同的结果时,我们在 netsh 的可用命令中看不到“mbn”命令。

有人知道发生了什么吗?我们知道有 2 个 netsh.exe 文件,一个在 sys32 中,一个在 syswow64 中。

感谢所有帮助。

4

1 回答 1

6

我们解决了这个问题:

运行命令“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.

这解决了它!

于 2012-05-14T12:30:28.877 回答