netsh mbn show interfaces приводит к тому, что команда не найдена в Win7 64Bit - PullRequest
4 голосов
/ 30 марта 2012

Я пытаюсь запустить «netsh mbn show interfaces» из файла .bat или .jar в 64-битной системе Windows 7, но каждый раз, когда я запускаю свой файл, это приводит к «Следующая команда не найдена".

Когда я запускаю ту же команду в командной строке cmd.exe, результат будет правильным и, как и ожидалось.Когда мы бежим /?мы видим «mbn» в доступных командах.Когда мы выводим тот же результат из .bat или .jar, мы не видим эту команду "mbn" в доступных командах для netsh.

Кто-нибудь знает, что происходит?Мы знаем, что есть 2 файла netsh.exe, один в sys32 и один в syswow64.

Вся помощь приветствуется.

1 Ответ

4 голосов
/ 14 мая 2012

мы решили проблему:

При запуске команды "netsh mbn show interface" выполнялся cmd как 64-битная операция.При запуске команды из приложения, то есть 32-разрядной, cmd запускается как 32-разрядная операция.А mbn-context недоступен в 32-битном.

В ОС Windows 64-битной ОС существует скрытая функция: перенаправление файловой системы.Значение: 64-битный процесс будет вызывать эквивалентный 32-битный процесс.

Обходной путь - это использование сценария csharp или чего-то еще, где вы можете переопределить перенаправление файловой системы:

IntPtr ptr = IntPtr.Zero;
Wow64DisableWow64FsRedirection(ref ptr);
// -- your proces information here --
Wow64RevertWow64FsRedirection(ptr);
//always revert the operation.

, и эторешил это!

...