2012-03-19 13 views
0

レジストリにサブキーHKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnectorを作成しました。起動したアプリケーションが実行されていないときにVisual Studioのイミディエイトウィンドウを使用してこのサブキーを読み込むと、そのサブキーを読み取ることができます。レジストリ仮想化をバイパスできません

しかし、私のアプリケーションがHKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnectorを探すと、それを見つけることができません。それはHKEY_LOCAL_MACHINE\SOFTWARE\MyAppを見つけることさえできません。

しかし、アプリケーションをデバッグモードで実行しているときに一時停止している場合、まったく同じコードではというだけではなく、HKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnectorが見つかりません。

少し掘り下げた後、私はレジストリ仮想化の犠牲になったようです。そこで、管理者権限(UACダイアログ)が必要なマニフェストを追加しましたが、レジストリの仮想化はまだ発生しています。この問題に関するマイクロソフトの文書では、これが当てはまるべきではないと主張している。助けて!

+0

おそらく、Wow64レジストリリダイレクトの代わりに(または?)レジストリ仮想化の影響を受けている可能性があります。http://msdn.microsoft.com/en-us/library/aa384253.aspx Windowsには、ミラーはレジストリにアクセスするときに実行されます。 –

+0

はい、WoW64が原因です。何らかの理由で、アセンブリは任意のCPUの代わりにx86をターゲットにしていました。私はそれを任意のCPUに変更し、うまくいった。あなたのコメントを答えに変えれば、私はそれを受け入れます。ありがとう:) –

+0

@スティーブあなたは本当に管理者権限を必要としたくありません。 –

答えて

1

おそらく、あなたは代わりにWOW64レジストリのリダイレクトによって影響を受ける(または一緒に?)されているレジストリの仮想化:

Windowsは、必ずアクセスするときに行く煙と鏡をたくさん持っていますレジストリ。

+0

WoW64を写真から取り除くための任意のCPU(x86だった)としてビルドする。問題が解決しました。ありがとう。 –