5

32ビットバージョンのリモートデスクトップクライアントを64ビットVistaで実行する必要があります。これは、製品の一部がリモートデスクトップクライアントと統合され、仮想チャネルを介してターミナルサーバー側のアプリと通信するためです。統合により、一部のサードパーティの32ビットドライバーが読み込まれ、64ビットプロセスで32ビットdllを読み込むことはできません。

通常、コマンドラインから32ビットバージョンのWindowsアプリケーションを実行するのは非常に簡単です。例:runwindow:

C:\Windows\SysWOW64\Notepad.exe

ファイル名の横に*32があるため、タスクmonitor\processesをチェックインすることでプロセスが32ビットであることがわかります。

ただし、リモートデスクトップクライアント(mstsc.exe)はボールをプレーしたくありません。起動方法(実行ウィンドウ、32ビットcmdウィンドウなど)に関係なく、常にC:\ Windows \ System32\mstsc.exeから64ビットバージョンを実行します。32ビットのC++プログラムを作成して作成しようとしましたが(通常、子プロセスも32ビットです)、これは機能しませんでした。

私も電話してみました:

Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection

mstsc.exeを開始する前後ですが、これも役に立ちませんでした。

誰かがこれを回避する方法を知っていますか?

[編集]プロセスモニターでさらに調査を行ったところ、32ビットバージョンのmstscが最初に開始されたようですが、これにより2番目の64ビットプロセスが作成され、32ビットバージョンが終了します。

4

5 に答える 5

3

あなたの質問は非常に混乱しています (1)。システム上のすべての実行可能ファイルは 32 ビットまたは 64 ビットの実行可能ファイルとしてコンパイルされます。64 ビットの実行可能ファイルがある場合は、それをどのように呼び出すかは問題ではありません。32 ビット コマンド ウィンドウから、[実行] メニューから、または別の 32 ビット プログラムから。常に64 ビット プロセスとして実行されます。

の出力で x64 を探すことで、実行可能ファイルが 32 ビットか 64 ビットかを確認できますdumpbin /HEADERS mstsc.exe

の 32 ビット バージョンをダウンロードしてインストールする必要がありますmstsc.exe。実際、mstsc.exeインストールからはほとんど独立していると思いますので、32 ビット システムから単純にコピーして実行するだけでよいかもしれません。

更新:
eranは、32 ビットmstsc.exeを直接呼び出しても問題が解決しないことを指摘しています。mstscこれは、64 ビット システムで実行されていることを検出し、それ自体の 64 ビット バージョンを再呼び出しするためです。なぜそれが行われるのか、またはそれを停止する方法がわかりません。その場合は、この回答を編集してください。

(1) Microsoft は、多くの実行可能ファイルを 32 ビット バージョンと 64 ビット バージョンの両方で出荷し、魔法のように PATH を再マッピングして、どちらかが見つかるようにすることで、この混乱を大きく助長しています。多くの場合、明らかに同じパス名です。しかし、これは単なる「煙と鏡」であり、実際にはパス名は常に異なります。

于 2009-06-17T03:11:14.313 に答える
1

https://serverfault.com/questions/25969/how-can-i-force-the-32-bit-version-of-the-remote-desktop-client-to-run-on-64-bitを参照してください

于 2010-11-04T02:38:37.210 に答える
0

考えてみれば、 IsWow64Process() をフックして 0 を返せばうまくいくかもしれません。

于 2009-12-10T18:03:28.713 に答える