問題タブ [wow64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2919 参照

c++ - KEY_WOW64_32KEY は、32 ビットと 64 ビットのコンパイルで異なる結果をもたらします

こんにちは、32 ビットと 64 ビットの両方のコンパイル済みコードを使用してレジストリの値を読み書きしようとしています。各コンパイルは同じ場所に読み書きする必要があります。KEY_WOW64_32KEY を使用してみましたが、役に立ちませんでした。

次のコードを 32 ビット ターゲットでコンパイルすると、値の書き込みと読み取りが行われます。64 ビット ターゲットでコンパイルすると、キーの検索も書き込みもできません。

編集: 次のコードは、Windows XP 64 ビットの 32 ビット バージョンと 64 ビット バージョンで正常に動作します。この問題は、Windows 7 64 ビットで発生します。

助けていただければ幸いです、ロブ。

0 投票する
1 に答える
2920 参照

memory - メモリ消費量が多いため、64 ビット OS で 32 ビット アプリケーションがクラッシュする

2 台の異なるマシンで 32 ビット バージョンの .net アプリケーションを実行しています。1 つは 32 ビット マシンで、もう 1 つは 64 ビット マシンです。

64 ビット環境では、32 ビット アプリケーションは WoW64 環境で実行されます。

64 ビット マシン構成は 4GB RAM です。

しかし、同じワークフローの同じアプリケーションが 32 ビット OS では 500 MB を消費し、64 ビット OS では 1 GB 以上を消費してクラッシュします。

これに関連する以下の記事を読みました。

http://blogs.sepago.de/helge/2008/03/11/windows-x64-all-the-same-yet-very-different-part-5

http://blogs.citrix.com/2011/10/13/wow64-memory-mapping-of-32bit-apps-running-on-a-64bit-windows/

しかし、彼らの分析は決定論的ではありません。この問題に直面した人はいますか? 32 ビット アプリを 64 ビット環境で実行するための推奨事項はありますか?

0 投票する
1 に答える
993 参照

windbg - 64 ビット OS で実行されている 32 ビット プロセスのミニダンプを作成する

32ビット環境で実行するように設計された.netアプリがあり、wow64環境の64ビットOSで実行されます。

現在、アプリケーションのダンプを作成するためのユーティリティ (32 ビット) を作成しています。

次のコードを使用してダンプを作成します。

この API 呼び出しは、32 ビット OS では正常に実行されますが、64 ビット OS では失敗します。

64ビットOSで32ビットアプリのダンプを作成した人はいますか?Pls help.

0 投票する
2 に答える
1461 参照

winapi - NtOpenKey を使用しているときにレジストリ アクセスをリダイレクトする正しい方法は何ですか?

私が取り組んでいるコードには、32 ビットと 64 ビットの両方のコンポーネントがあり、レジストリで情報を共有する必要があります。このため、関数を使用するときにレジストリのリダイレクトを制御しようとしていNtOpenKeyます (のユーザーモードに相当ZwOpenKey) - 64 ビット コードからこの関数を呼び出す必要がありますが、32 ビット レジストリにアクセスする必要があります。(コードは以前は 32 ビットのみでしたが、現在は 64 ビットにアップグレードされているため、既存のコードをできるだけ多く使用することをお勧めします。これは、すべてを書き直して使用したくないということRegOpenKeyExです。)

当然、高レベルのレジストリ機能とは異なりNtOpenKey、アクセス フラグを認識しないため、リダイレクトを指定する方法はありません。KEY_WOW64_32KEY

現時点で考えられる唯一の解決策はWow6432Node、レジストリにアクセスするときにキー名を明示的にハードコーディングすることです。何かのようなもの:

\Registry\Machine\Software\Wow6432Node\MyCompanyKey\MyKey

残念ながら、これはハッキングに近いものであり、マイクロソフトは特に推奨していません。

この問題の正しい解決策はありますか? ドキュメントを読んでも役に立たず、関連する検索結果も見つかりませんでした。

編集:ちょっとした追加の詳細: Windows Server 2003 32 ビット/64 ビット、Windows 7/8、および Windows Server 2008 32 ビット/64 ビットをサポートする必要があります。(基本的に、Windows Server 2003 + Windows 7 以降のすべてのサーバー フレーバー。)

0 投票する
1 に答える
2268 参照

c++ - C++ コマンド ライン「操作は WOW64 では許可されていません」

管理者を使用して C++ プログラムからシステム プログラムを呼び出そうとしましたが、「WOW64 では操作が許可されていません」というメッセージしか表示されません。私は次のコードを試しました:

また

コマンドラインで呼び出すと、動作します

netsh.exe インターフェイス ipv6 add v6v4tunnel IP6Tunnel 192.168.1.2 216.66.84.42

C++ プログラムからシステム コマンドを実行するにはどうすればよいですか。

C++ System()、CreateProcess()、および ShellExecute() を通常のコマンド ラインの start と比較できないのはなぜですか?

0 投票する
1 に答える
754 参照

c++ - 32 ビット サービスで RegLoadKey を使用して 64 ビット キーを読み込めません

32 ビット サービスからユーザーのレジストリ キーを開いて変更する必要があります (この時点ではユーザーはログインしていないことに注意してください)。次の手順を実行します。

問題は、Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotifyキーが実際のユーザー プロファイルに存在することがわかっているにもかかわらず、キーが読み込まれていないことです。ユーザー アカウントを読み込み、64 ビットの regedit を使用することで確認できます。

これは Wow64 リダイレクトと関係があると思われますが、何が間違っているのか理解できないようです。

編集:最初の API のエラー チェックを追加しました。

0 投票する
3 に答える
3700 参照

c++ - プロセス メモリをスキャンするとクラッシュする

私は自分の DLL をプロセスに注入し、自分と同じ値のアドレスをメモリでスキャンしようとしましたが、最初のアドレスを取得した後にクラッシュが発生しました。10 個のアドレスである必要があります。

私の保護チェックは間違っていると思いますが、よくわかりません。

0 投票する
1 に答える
1110 参照

windows - Windows 8: WOW64 で実行されている 32 ビット アプリケーションでヒープ分析を行う

まず、これはヒープ分析の方法に関する一般的な質問ではありません。以前のバージョンの Windows ではよく知っていることです。

しかし、私が疑問に思っているのは、64 ビット Windows 8 で WOW64 レイヤーを介して実行されている 32 ビット アプリケーションのヒープ分析を実行できた人がいるかどうかです。ここでは Windows 8 がキーワードになっています。

Windows 7 と Windows 用のデバッグ ツールを実行しています。単純に gflags を使用してユーザー スタックとヒープのタグ付けを適用し、x86 バージョンの WinDbg を使用してプロセスにアタッチし、32 ビット コンテキストのみを取得しました (通常はそうではありません)。 WOW64レイヤー自体に興味があります)。ヒープ情報は完全に表示されます。

Windows 8 で同じ手順を実行し、gflags を追加してプロセスを開始すると、起動後のメモリ使用量が 40 MB から 140 MB に増加し、gflags が開始されたことを示します。

ただし、WinDbg も umdh もヒープ情報を取得できません。x86 バージョンを使用する古い方法でも、ドキュメントに記載されている方法でも、WOW64 を介して実行する場合は、x64 バージョンを実行して .effmach を 32 ビット コンテキストに切り替えます。

さらに、Windows 用のデバッグ ツールの Windows 7 と Windows 8 の両方のバージョンを使用してこれを試したので、Windows 7 で良い結果が得られた同じツールが Windows 8 では同じように動作しません。

私の現在の推測では、Windows 8 がヒープを管理する方法の変更 (インターネットに関するいくつかの記事を見てきました) は、Windows 用のデバッグ ツールに完全に更新/反映されていない可能性があります。私は(私自身の使用シナリオはWOW64コンテキストで32ビットプロセスのみを含むため、確かなことはわかりません)意図したとおりに動作する間にWOW64レイヤーがない場合のアプリケーションのヒープ分析は機能すると思いますが、WOW64は現在ブロッカーですここ。

何か間違ったことをしていないか、または現在のツールに問題があるかどうかを知りたいと思っています。私は現在、メモリ分析を行うために VM で Windows 7 を実行するようにしています。

では、Windows 8 の WOW64 で win32 アプリケーションのヒープ分析を成功させた人はいますか?

0 投票する
1 に答える
179 参照

.net - 単体テスト (ビジュアル スタジオ テスト フレームワークを使用して開発) が WOW6432Node から値を読み取るのはなぜですか?

Visual Studio Testing Framework に基づいて単体テストを作成しました。

しかし、どういうわけか、WOW6432Node からレジストリ エントリを読み取っていますか?

「任意の CPU」プラットフォームで単体テスト フレームワークを構築しました。

私のオペレーティングシステムは64ビットです。

管理者として Visual Studio 2010 を実行しています。

また、ビルド構成を x64 に変更しようとしましたが、テスト ケースを実行できませんでした (フレームワークが探している正しいレジストリ エントリを x64 で強制的にロードするかどうかをテストするため)。

悪い画像フォーマットの例外が発生しています。

私が観察した唯一のことは、「警告 CS1607: アセンブリ生成 -- 参照されたアセンブリ 'mscorlib.dll' が別のプロセッサをターゲットにしています」です。

しかし、「system.dll - mscorlib.dll」を参照する他のプロジェクトでは、x64 conf でビルドしたときにこの警告が表示されません。

よろしく、ドリーマー

0 投票する
1 に答える
6822 参照

c# - C# レジストリへのキーの追加が LocalMachine に失敗する

LocalMachineレジストリにキーを追加しようとしています。私はこのコードを使用しています:

管理者アカウントで実行します。「管理者として実行」でイベントを実行しましたが、レジストリには何も追加されません:(。をに変更するLocalMachineCurrentUser、実際にはCurrentUserキーに追加されます。しかし、LocalMachineに強制的に追加するにはどうすればよいですか?