netsh mbn show interfaces приводит к тому, что команда не найдена в Win7 64Bit

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

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

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

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


person Mario Van den Eynde    schedule 30.03.2012    source источник


Ответы (1)


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

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

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

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

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

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

person Mario Van den Eynde    schedule 14.05.2012
comment
спасибо это очень помогло! Просто обновите PHP до v64bit и netsh работает с mbn - person waza123; 16.01.2016