VistaやWindows7でのレジストリ操作のVirtualStore仮想化を理解するのに問題があります。標準ユーザーとして実行しているときにHKEY_LOCAL_MACHINEルートに何かを書き込もうとすると、Windowsに操作を仮想化して、HKEY_CURRENT_USER / Classes /VirtualStore/に書き込むように促されると思いました。代わりにMACHINE 。私はいくつかの古いアプリケーションがまさにそのように動作するのを見てきました。
ただし、C#および.Net4でその動作を複製しようとすると、HKLMへの書き込み操作が失敗し、代わりにUnauthorizedAccessExceptionが発生します。仮想化を強制する方法はありますか?
質問にいくつかのコンテキストを与えるために:私は元々別のレガシーアプリによって作成されたレジストリキーを読み取って操作しようとしています。VistaまたはWindows7では、これらはVirtualStoreに配置されます。WinXP以上で同じレジストリアクセスロジックを使用したいのですが、レジストリ操作は従来のアプリの操作とまったく同じように仮想化されると思いました(そのため、同じキーで動作します)。これは期待どおりに機能しません。ユーザーがVistaまたは7を実行していて、UACが有効になっている場合、私が知っている唯一の回避策は、VirtualStoreパスにアクセスすることです。ただし、特にMicrosoftが仮想化の動作を変更することを決定した場合は醜いようです。将来のWindowsバージョン。