您可以从应用程序更改视觉效果性能设置吗?

时间:2012-03-27 20:36:33

标签: .net windows winapi registry

我正在修改在以下位置找到的注册表值:

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\ VisualEffects。

出于我的目的,它可以存储DWORD值0,1,2。这些值对应于Windows 7中“性能选项”下的“视觉效果”单选按钮; “让Windows选择最适合我电脑的产品”,“调整最佳外观”和“调整以获得最佳性能”。

如果您使用实际的“性能选项”屏幕并进行更改并单击“应用”,则Windows中的可视设置将按预期重新加载。如果以编程方式更改该值,则它不会执行任何操作。

有没有办法在代码中完成此操作?

2 个答案:

答案 0 :(得分:3)

扩展Raymond的评论:

“视觉效果”选项卡有15个单独的性能选项。单选按钮“调整为最佳外观”将全部打开。 “调整以获得最佳性能”将它们全部关闭。 “让Windows选择最适合我的计算机的东西”可能是基于Windows体验索引或类似的方法设置它们。

您无法通过应用程序实现“让Windows为我的计算机选择最佳选择”,或者至少不容易实现。但是您应该能够通过使用SystemParametersInfo并设置15个单独选项中的每一个来实现其他两个选项。

您需要确定与“视觉效果”选项卡中的选项对应的十五个设置:一些将是相当明显的,另一些可能是试错的问题。希望如果将单选按钮设置为“自定义”,当您打开“视觉效果”选项卡时,您将看到应用程序所做的更改,因此您将能够判断您是否选择了正确的设置。 / p>

您可能还想为单选按钮设置注册表值,以便用户在打开控制面板时看到正确的内容。

对于您描述的方案,

附录: ,您可能希望先读取每个当前设置,然后再恢复它们。也可以读取和恢复注册表设置,或者只是不要触摸它。

答案 1 :(得分:1)

据我所知,注册表与其他任何存储一样。

当应用程序需要注册表中的值时,他们会检查它。大多数应用程序只在首次启动时才读取注册表。如果手动更改其中一个注册表项,通常必须重新启动相关的应用程序。即使不需要重新启动,您仍然需要弄清楚如何触发该特定应用程序以重新检索该特定条目。

所以为了回答你的问题,没有神奇的“刷新”命令可以将注册表项的当前值推送到适当的应用程序。

现在,您想问的真正问题是“有没有办法强制Windows重新加载性能选项?”。我知道没办法做到这一点。

如果有可用的WinApi调用,它可能会让您提供新值,它将负责更新注册表。