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);

All the registry entries that appear under the specified path can be read or written through the QSettings object as usual (using forward slashes instead of backslashes).
For example:
settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);

于 2012-12-22T11:38:03.797 回答