禁用“是否要更改配色方案以提高性能?” 警告

Wil*_*art 126 windows-7

有时会弹出这个对话框(见下面的截图)。每次出现时,我都会选择“保留当前的配色方案,不再显示此消息”。然后 Windows 再次提醒我 - 第二天或重新启动后,或者有时 5 分钟后。

您想更改配色方案以提高性能吗?

您想更改配色方案以提高性能吗?

Windows 检测到您的计算机性能很慢。这可能是因为没有足够的资源来运行 Windows Aero 配色方案。要提高性能,请尝试将配色方案更改为 Windows 7 Basic。您所做的任何更改将一直有效,直到您下次登录到 Windows

  • 将配色方案更改为 Windows 7 Basic
  • 保持当前的配色方案,但再次询问我的计算机是否继续运行缓慢
  • 保持当前的配色方案,不再显示此消息

Windows 是否有某种原因忽略/忘记我试图抑制对话框?我很想再也见不到它了,它很烦人,而且它把我从全屏应用程序中拉了出来。

如果重要的话,我正在运行 Windows 7 x64 Professional。我相信出现该对话框是因为我正在为 DirectX 应用程序强制 Vsync 和三重缓冲。

A D*_*arf 74

假设您意识到此消息通知您您的系统资源不足,并要求您禁用 Aero 以保持最佳速度运行,

  1. 转到开始菜单并在搜索框中键入操作中心
  2. 启动它(它应该是顶部条目,在“控制面板”组下)
  3. 在左侧边栏上,单击 Change Action Center settings
  4. 取消Windows Troubleshooting选中“维护消息”下的复选框。
  5. 单击Ok按钮,您就完成了。

这是设置屏幕的屏幕截图:

或者:

  • 您可以尝试保持此设置不变,并在启动通常会触发此操作中心通知的应用程序之前切换到基本桌面模式。或者,
  • 您可以右键单击用于启动这些全屏应用程序的图标,单击属性并在兼容性选项卡下勾选Disable desktop composition。这将在执行此应用程序期间禁用桌面窗口管理器会话管理器服务,这将增加系统和视频内存并避免某些应用程序不兼容。如果您有足够的系统和视频内存,但在使用某些游戏或全屏应用程序时仍然收到此消息,则可能是操作中心消息的原因。

  • @will 嗯,我不确定这个答案是否正确。我没有选中“Windows 故障排除”,我一直被这个对话框烦扰。 (68认同)
  • 这不起作用。我没有检查它。 (20认同)
  • 我真的很喜欢这个答案,只是它不起作用。 (11认同)
  • 值得一提的是,将不再显示的坏硬件设备驱动程序消息。Ã 如果您不更改硬件或始终从可靠来源下载驱动程序,则这种情况很少发生。 (3认同)
  • 法语 windows 7 版本的答案,因为它翻译得不是很好:Panneau de configuration/Système et sécurité/Centre de maintenance/Modifier les paramètres du Center de maintenance(左菜单)。 (2认同)

Der*_*ler 26

即使我从未收到完全相同的消息,我也经常处于类似的情况,并且已经进行了一些测试。

据我了解,这里受到压力的核心资源是GPU 内存。但这并不一定表明您通常会用完此资源。这可能只是意味着桌面窗口管理器检测到您的运行速度太低,可以禁用此服务的一项特定功能以释放更多内存。

为了测试这一点,我开始打开 ​​GPU 内存密集型应用程序:

在此处输入图片说明

这在我的三屏设置上的使用率略高于平均水平,其中运行了一些关键播放器(Visual Studio 2012(启用硬件加速)、PhpStorm、Aptana Studio、Chrome、Firefox、IE 等)。所以,是的,如果您只有 1 GB 的卡并且这将是您通常的使用场景,那么您已经遇到了问题。

我不得不进一步推动并启动更多的 Visual Studio 实例......

在此处输入图片说明
在此处输入图片说明

...直到它接近 1.5 GB 标记和...

在此处输入图片说明

折断!这导致 Windows 完全终止桌面合成(并释放一些宝贵的资源)。

现在,当我已经处于临界水平,并且我启动了一个在全屏模式下使用过多 GPU 内存的应用程序时,我什至可以超越这个临界限制。以下是在 2560x1440 分辨率下以最大细节运行 Black Mesa 一段时间后的结果:

在此处输入图片说明

因此,可以从中推断出两件事。虽然超过桌面上的 75% 标记可以强制 Windows 禁用桌面组合,但当在全屏应用程序中达到相同的限制时(并且,可选择退出该应用程序)桌面组合不会被禁用。
第二件事是,当您在玩游戏时,您可能会想到“嘿,我有足够的资源来运行这个游戏,为什么我没有足够的资源用于桌面?”。原因是,两者同时需要内存。

Windows 可能只能在您退出游戏后告诉您内存情况。因此,当我退出 Black Mesa启动另一个 Visual Studio 时... 在此处输入图片说明

那么,我们能做些什么呢?

获得更多 GPU 内存

甜美而简单。

禁用桌面组合(每个进程)

正如已经建议的那样,您可以禁用单个可执行文件的桌面组合。这会导致在执行可执行文件时临时禁用桌面组合。这大大减少了在我的测试中执行应用程序时的整体内存消耗:
在此处输入图片说明

赏金通知提到这是不可取的,因为这可能需要大量工作。

禁用桌面组合(全局)

我不会认为这是一个解决方案,因为通常需要桌面组合。但这是禁用它的地方:

在此处输入图片说明

我只是想摆脱烦人的消息!

仅仅因为您取消警告“您的电池快没电了!您只能再通话 10 分钟! ”并不意味着您可以通话超过 10 分钟。事实上,您的手机很可能只是关机,仅此而已。现在如何改进?

我从不认为该消息可以关闭,我不认为这可以被视为一种好处。

你可能认为你知道得更好,但你不知道。如果系统告诉你它的资源用完了,那就是。

但事实并非如此!我知道!

好吧,让我们假设 Windows 不够智能,无法检测您所处的特殊情况,并且警告消息只是一个令人讨厌的不便。现在怎么办?

问题是,就我个人而言,我也受此影响,这让我很恼火。因为我什至没有收到那个警告信息。Windows 只是切换我的颜色配置文件,仅此而已。我真的很喜欢这样。

当它发生时,我通常会快速运行一个脚本,调用

net stop uxsms & net start uxsms
Run Code Online (Sandbox Code Playgroud)

这是完整的脚本。它将弹出一个 UAC 提示并重新启动服务,以便它可以从任何地方触发。我把它固定在开始菜单上。

@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
    cscript //E:JScript //nologo "%~f0"
    @goto :EOF
)
NET STOP uxsms
NET START uxsms
@goto :EOF
@end @ELSE
ShA=new ActiveXObject("Shell.Application")
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+"\"","","runas",5);
@end
Run Code Online (Sandbox Code Playgroud)

这将重新启动桌面窗口管理器并将我带回我的合成桌面(并且它在此过程中释放了大量资源,是的)。

知道了这一点,您还可以为自己构建一个特殊的游戏环境,在该环境中您可以在开始游戏之前停止服务以打击整个行为。但是,这将导致与通过文件属性禁用单个可执行文件的桌面组合相同的行为。

  • *“我从不认为可以关闭该消息,我不认为这可以被视为一种好处。”* - 因为在玩视频游戏时经常弹出此消息,使我退出游戏 **(有时没有暂停)** 只是为了再次禁用此消息。我不在乎我的系统是否使用了它所有的 GPU 内存 *(事实上,这是一个 [好事](http://superuser.com/a/612916/23668))*。我不在乎 Windows Aero 在我玩游戏时是否运行缓慢,只要游戏继续运行良好——它总是如此。我只是希望这条消息不会干扰我的游戏。 (28认同)
  • 问题(至少对我而言)是,虽然我的内存可能不足,但 ** 一切仍然运行良好,如果我单击“不更改任何内容”,游戏和 dwm.exe 的运行非常好* *. 所以不,我不想要减少我的记忆 udace 的调整,**我想让 JUTS THE DIALOG 消失**。 (26认同)
  • 我的意思是,该对话框具有我想要的按钮选项之一,**但该按钮不起作用**。`保留当前的配色方案,不再显示此消息`。 (16认同)
  • 如果我将来遇到实际上*确实*需要桌面合成引擎使用的额外视频内存的情况,那么我会解决这个问题。然而,在这一点上,**我不需要那段记忆**。 (6认同)
  • 所有的优点,但是...我有一个系统,有两个 ATI Radeon HD 5450 卡,我唯一运行的是 iTunes 和 Chrome - 我得到了这个。这是没有意义的。 (2认同)

nar*_*ars 20

我一直在 Windows 7 PC 上收到这条该死的消息(现在很长一段时间),主要是在通过 VNC(任何风格)远程访问它们时,但想要保持 Aero 和桌面组合打开(当然不是使用 VNC 镜像驱动程序,否则肯定没有 Aero)。

切换到基本主题,即使是暂时的,例如会破坏一些旧应用程序的 gui(例如那些获得 DPI 虚拟化的应用程序,仅适用于 Aero + 桌面组合),这是我想保留 Aero 和桌面组合的原因之一默认情况下打开,但只是停止该死的消息,而且系统实际上运行良好,正如许多用户在此页面的评论中所确认的那样,问题只是消息!

取消勾选“维护消息”下的“Windows 故障排除”复选框是没有解决方案的,因为许多人也确认了这里的评论,它不起作用,禁用桌面组合是......好吧......就像告诉你关掉你的车电机,因为它不能正常工作......即不是一个解决方案......

在被这条消息困扰了很长时间后,我决定我真的必须停止这个,然后我调试了 dwm.exe 并最终找到了如何永久终止该消息......如果你想这样做并且你有Windows 7 SP1 x64 (对于 x86 可能有所不同)只需像我一样修补您的 dwm.exe:

警告:只有在您知道自己在做什么时才这样做,否则您可能会破坏您的系统!!!

对于 Windows 7 SP1 x64:

(original file md5: f162d5f5e845b9dc352dd1bad8cef1bc)
open file on an hex editor and search for this pattern:
FF15D2A5000085C079
replace it by:
9090909090909090EB
(patched file md5: 2ab05d7454dcd8ef20a7f99b3390973d)
Run Code Online (Sandbox Code Playgroud)

对于 Windows 7 SP1 x64 + KB3125574 便利汇总:

(original file md5: c206c9dbfc34afd367dd150d979a5185)
open file on an hex editor and search for this pattern:
FF1562B1000085C079
replace it by:
9090909090909090EB
(patched file md5: 8243c03dad2b9aaaddabe65e4869e2ae)
Run Code Online (Sandbox Code Playgroud)

(该补丁只是删除了对 TaskDialogIndirect api 的调用,负责显示消息窗口并强制执行 jmp,如果调用返回成功,则最初将采用该 jmp ......必须采用 jmp 作为代码显然也只是为了如果无法显示消息,请切换到基本主题)

请注意,为了能够更改/重命名/替换您的 dwm.exe 文件,您需要停止“桌面窗口管理器会话管理器”服务(在 services.msc 上),使其停止运行,并取得文件所有权并调整权限。 .. 因为该文件默认归 TrustedInstaller 所有...

另请注意,在我对 dwm.exe 的分析中,我发现实际上有两个这样的消息(相似但不相同):

  • 一个是顶部问题屏幕截图中显示的那个,当 dwm.exe 使用某些 cpu 资源时会显示这个……大约 30% 可能足以触发它(VNC 使这种情况发生),我的补丁删除了此消息.
  • 还有另一条类似的消息,但文本略有不同,当 dwm.exe 使用过多 GPU 内存时会显示该消息,该消息不是问题屏幕截图中显示的消息,我的补丁不会删除该消息。

  • 恭喜你成为 5 年来第一个真正费心回答这个问题而不用迂腐的“*你不应该忽略这个完全可行且不多余的警告。*”的人。可悲的是,修补可执行文件太过分了在我看来有风险,但我可以确认我的 MD5 与您的相符。 (14认同)
  • 谢谢莉莲塔尔。我明白你的意思,我通常也不喜欢打补丁,但是 IMO 在这种情况下没有太大的风险,因为补丁真的很简单,它基本上只是删除了创建消息的 api 调用,而且似乎真的是唯一永久的方法修理它... (4认同)
  • @Coldblackice:您需要在 TaskDialogIndirect api (comctl32.dll) 上添加一个断点,这是创建此类“问题”窗口的 api(如果您在 CreateWindowEx 上添加它,您也将能够访问它,我首先做到了,但是你需要做更多的追溯......跟随RET直到你回到dwm.exe代码)。我使用了 x64dbg,将它附加到一个已经运行的 dwm.exe 进程,但是我不得不使用一个小技巧:在你将调试器附加到 dwm.exe 之后,当调试被“暂停”时,它会冻结整个 gui,那么你就不会能够在任何窗口上看到任何东西,甚至调试器都看不到...... (2认同)
  • @Coldblackice:...然后解决我确实使用了两个 Windows 会话(即两个用户帐户),一个只是为了运行调试器并将其从另一个会话附加到 dwm.exe,然后将 swtch 用户切换到另一个会话和运行一些触发消息的程序(我使用了 vnc),它会触发断点并冻结 gui,因为调试器将暂停,然后按 ctrl+alt+del 并切换到第一个会话以使用调试器......你看什么我的意思是。 (2认同)

har*_*ymc 8

您的 GPU 内存不足。这可能是:

  1. 您正在使用的图形密集型程序(例如游戏)中的错误
  2. 视频驱动程序中的错误,
  3. 资源匮乏的计算机。

当您运行 Windows 7 x64 时,第三种可能性可能不适用。

对于第二种可能性,您可以将视频驱动程序更新到制造商网站上的最新版本。

对于第一种可能性,如果在运行同一程序时总是发生这种情况,那么它可能与 Aero 主题存在兼容性问题。要在运行该应用程序时禁用 Aero,请将其可执行文件的属性修改为“禁用桌面组合”:

在此处输入图片说明

  • 你的建议都不是真的。问题不在于我的 GPU 内存不足(或不足),而是 Win7 有一个错误,即它使用过时的百分比来表示 GPU 内存不足。(警告为 67%,强制切换为 75%)。问题是,如果您有 4GB 内存,则 67% 的消息会在超过 1.2GB 的可用空间中启动。这是多年前与现在交换/分页文件的建议。过去的建议是将交换/页面大小设置为 2X 内存大小。当我有 512MB 内存时,我停止使用交换(带 128GB 内存,我仍然不需要*它)。Win 用于限制的分数已过时。 (2认同)