0

Windows用のQtアプリケーションを作成しており、Windows 7 64ビットを使用しています。

アプリケーションはレジストリに書き込む必要があるため、QSettingsクラスを使用しようとしましたが、ドキュメントで見つけたように: 

Windows では、WOW64 モードで実行されている 32 ビット プログラムの場合、設定は次のレジストリ パスに保存されます: HKEY_LOCAL_MACHINE\Software\WOW6432node\MySW

HKEY_LOCAL_MACHINE\Software\MySWそれをオーバーライドして直接書き込む方法はありますか?

説明:

アプリケーションはレジストリに書き込みを行っています。書き込まれたキーは他のアプリケーションで使用されますが、64 ビット モードで実行されているのか 32 ビット モードで実行されているのかわかりません。

C# で可能であることはわかっているので、C++ でも可能である必要があります。

4

2 に答える 2

0

MSDN の次の記事を参照してください。

レジストリ内の 32 ビットおよび 64 ビットのアプリケーション データ

一部の Win32 API を使用すると、この動作を変更できるようです。デフォルトの動作がうまくいかない理由はわかりませんが。

于 2012-07-22T07:28:02.083 に答える
0

Qtでやりたいのなら、これが最も適切な方法だと思います:


[ソース: http://doc.qt.digia.com/4.7/qsettings.html#accessing-the-windows-registry-directly ]

Windows レジストリへの直接アクセス Windows では、QSettings を使用すると、QSettings で書き込まれた設定 (または文字列データなどのサポートされている形式の設定) にシステム レジストリにアクセスできます。これは、レジストリ内のパスと QSettings::NativeFormat を使用して QSettings オブジェクトを構築することによって行われます。
例えば:
QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Office", QSettings::NativeFormat);

指定されたパスの下に表示されるすべてのレジストリ エントリは、通常どおり (円記号の代わりにスラッシュを使用して) QSettings オブジェクトを介して読み書きできます。
例えば:
settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);

于 2012-12-22T11:38:03.797 に答える