5

Windows764ビットシステムで.batまたは.jarファイルから「netshmbnshowinterfaces」を実行しようとしていますが、ファイルを実行するたびに「次のコマンドが見つかりませんでしたmbnshowinterfaces」という結果になります。

cmd.exeプロンプトで同じコマンドを実行すると、期待どおりの結果が得られます。/を実行すると?使用可能なコマンドに「mbn」が表示されます。.batまたは.jarから同じ結果を出力すると、netshで使用可能なコマンドにその「mbn」コマンドが表示されません。

誰が何が起こっているのか知っていますか?2つのnetsh.exeファイルがあります。1つはsys32に、もう1つはsyswow64にあります。

すべての助けに感謝します。

4

1 に答える 1

6

問題を解決しました:

コマンド「netshmbnshowinterface」を実行すると、コマンドは64ビット操作として実行されていました。アプリケーション(つまり32ビット)からコマンドを実行する場合、cmdは32ビット操作として実行されます。また、mbn-contextは32ビットでは使用できません。

Windows 64ビットOSには、ファイルシステムリダイレクトという舞台裏の機能があります。意味: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 に答える