阻止 GeForce Experience 强制升级至 NVIDIA App 及旧版 GeForce Experience 下载

我之所以到现在还在使用 GeForce Experience,是因为 NVIDIA App 的即时回放一直会花屏。NVIDIA App 刚推出时我就尝试用过,当时录制出来的回放画面会出现花屏,基本没法正常使用。本以为经过这么多次更新,这个问题应该已经解决了,最近重新试了一次,结果还是一样。

即时回放又是我平时经常使用的功能,所以最后只能退回旧版 GeForce Experience。麻烦在于,NVIDIA 已逐步将 GFE 的功能迁移到 NVIDIA App,旧版 GFE 会检测更新,并尝试启动 NVIDIA App 安装程序。

网上常见的方案包括禁用计划任务、修改 NTFS 权限、锁定 gfeupdate.json,或者禁止 Downloader 写入。实际上,如果目的只是阻止 GeForce Experience 自己启动升级程序,可以使用一个影响范围更小的方法:

删除 GeForce Experience 配置文件中的 nv-self-update-path

这种方法不会破坏 NVIDIA Downloader,也不需要修改系统权限。它只是切断 GFE 自身调用更新安装程序的路径。

修改方法#

准备:下载旧版 GeForce Experience#

本文使用的是 GeForce Experience 3.28.0.417。为了方便需要旧版安装包的用户,我将原版安装程序保存在 Google Drive:

下载 GeForce Experience 3.28.0.417(Google Drive)

  • 文件名nvidia-geforce-experience-3-28-0-417.exe
  • 文件大小:125.56 MiB(131,655,600 字节)
  • 数字签名:NVIDIA Corporation

1. 找到配置文件#

进入下面的目录:

C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience

找到其中的:

NVIDIA GeForce Experience.json

2. 备份原文件#

修改之前,先复制一份 NVIDIA GeForce Experience.json,例如命名为:

NVIDIA GeForce Experience.json.bak

以后需要恢复时,可以直接换回原文件。

3. 删除自更新配置#

使用记事本、Notepad++、VS Code 等文本编辑器打开 NVIDIA GeForce Experience.json,找到并删除下面这一整行:

"nv-self-update-path=Downloader\\gfeupdate.json",

例如,修改前为:

{
  "switches": [
    "nv-custom-black-window=true",
    "nv-gpu-accel=true",
    "nv-background-color=0xFF000000",
    "nv-min-window-size=900,600",
    "nv-def-window-size=1218,845",
    "nv-self-update-path=Downloader\\gfeupdate.json",
    "nv-node-app=NvNode\\nvnodejslauncher.exe",
    "nv-node-data=NvNode\\nodejs.json",
    "nv-allow-file-access-from-files=true",
    "nv-app-hidpi=true",
    "nv-url-relative=./www/index.html",
    "nv-secure-icon-window-url-relative=./www/security-certificate-app.html#/security-certificate",
    "nv-plugin-folder-relative=./cef/gfe;./cef/common",
    "nv-plugin-dependencies-relative=./dependencies"
  ]
}

修改后为:

{
  "switches": [
    "nv-custom-black-window=true",
    "nv-gpu-accel=true",
    "nv-background-color=0xFF000000",
    "nv-min-window-size=900,600",
    "nv-def-window-size=1218,845",
    "nv-node-app=NvNode\\nvnodejslauncher.exe",
    "nv-node-data=NvNode\\nodejs.json",
    "nv-allow-file-access-from-files=true",
    "nv-app-hidpi=true",
    "nv-url-relative=./www/index.html",
    "nv-secure-icon-window-url-relative=./www/security-certificate-app.html#/security-certificate",
    "nv-plugin-folder-relative=./cef/gfe;./cef/common",
    "nv-plugin-dependencies-relative=./dependencies"
  ]
}

确认 JSON 的逗号仍然正确,然后保存文件。

由于配置文件位于 C:\Program Files,Windows 可能要求管理员权限。如果直接保存失败,可以使用管理员权限运行文本编辑器,再重新打开该文件进行修改。

4. 启动 GeForce Experience#

在修改这项配置之前,GeForce Experience 会被强制更新弹窗拦住,要求安装 NVIDIA App,无法正常进入主界面。删除 nv-self-update-path 并保存配置后,再重新启动 GFE。

此时应该可以直接进入 GeForce Experience,不再通过原来的自更新入口启动 NVIDIA App 安装程序。如果 GFE 仍停留在之前的更新界面,可以先结束相关 NVIDIA 界面进程,或者重启电脑后再试。

工作原理#

GeForce Experience 的主程序配置文件位于:

C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience\NVIDIA GeForce Experience.json

默认配置的 switches 中包含类似下面的一项:

"nv-self-update-path=Downloader\\gfeupdate.json",

完整配置的一部分大致如下:

{
  "switches": [
    "nv-custom-black-window=true",
    "nv-gpu-accel=true",
    "nv-background-color=0xFF000000",
    "nv-min-window-size=900,600",
    "nv-def-window-size=1218,845",
    "nv-self-update-path=Downloader\\gfeupdate.json",
    "nv-node-app=NvNode\\nvnodejslauncher.exe",
    "nv-node-data=NvNode\\nodejs.json",
    "nv-allow-file-access-from-files=true",
    "nv-app-hidpi=true",
    "nv-url-relative=./www/index.html",
    "nv-secure-icon-window-url-relative=./www/security-certificate-app.html#/security-certificate",
    "nv-plugin-folder-relative=./cef/gfe;./cef/common",
    "nv-plugin-dependencies-relative=./dependencies"
  ]
}

nv-self-update-path 指定了 GeForce Experience 自更新流程需要读取的更新配置。它对应的文件通常位于:

C:\ProgramData\NVIDIA Corporation\Downloader\gfeupdate.json

这个文件可能包含类似下面的内容:

{
  "url": "C:\\ProgramData\\NVIDIA Corporation\\Downloader\\xxxxxxxx\\NvidiaAppSetupInt_xxx.exe",
  "isMandatory": true
}

也就是说,NVIDIA 后台组件仍然可以检查更新,并将 NVIDIA App 安装程序的位置写入 gfeupdate.json。真正需要阻断的是下面这条链路:

GeForce Experience
        ↓
nv-self-update-path
        ↓
Downloader\gfeupdate.json
        ↓
NVIDIA App 安装程序
        ↓
执行升级

删除 nv-self-update-path 后,相当于从 GFE 的配置中移除了这条自更新入口:

GeForce Experience
        ↓
找不到 self-update path
        ✕
不再通过该配置调用更新安装程序

为什么 gfeupdate.json 还会更新#

修改以后,下面这个文件仍然可能继续变化:

C:\ProgramData\NVIDIA Corporation\Downloader\gfeupdate.json

其中甚至可能重新出现:

{
  "url": "...\\NvidiaAppSetupInt_xxx.exe",
  "isMandatory": true
}

这是正常现象,因为更新检测与 GFE 自更新是两个不同的环节。

更新检测仍可进行#

NVIDIA 后台组件仍然可以执行:

连接 NVIDIA 服务器
→ 查询更新
→ 下载更新信息
→ 写入 gfeupdate.json

本文没有修改这一部分。

GFE 自更新入口已被移除#

原来的调用链是:

GeForce Experience
→ nv-self-update-path
→ gfeupdate.json
→ 启动安装程序

删除配置项以后变成:

GeForce Experience
→ 无 nv-self-update-path
→ 自更新调用链被切断

所以,gfeupdate.json 被更新,并不等于 GeForce Experience 一定会执行更新,两件事情并不矛盾。

为什么不需要锁定 Downloader#

有些教程会建议修改下面目录的 NTFS 权限,禁止 NVIDIA 写入:

C:\ProgramData\NVIDIA Corporation\Downloader

也有方案会把 gfeupdate.json 清空后设成只读。如果只是为了阻止 GFE 强制升级,这通常没有必要。

锁定 Downloader 会影响整个 NVIDIA 下载机制。以后升级显卡驱动或其他组件时,也更难判断究竟是哪一层权限导致了故障。删除 nv-self-update-path 的影响范围更小:

功能修改后的状态
Downloader正常
更新检测正常
更新信息下载正常
GFE 本体正常
ShadowPlay / 即时回放正常
GFE 自更新入口禁用

为什么不需要禁用 NVIDIA 计划任务#

系统中通常还能看到类似下面的计划任务:

NvDriverUpdateCheckDaily
NVIDIA GeForce Experience SelfUpdate
NvNodeLauncher
NvProfileUpdaterDaily
NvProfileUpdaterOnLogon

没有必要为了本文方法将它们全部关闭。删除 nv-self-update-path 本身并不依赖 NVIDIA GeForce Experience SelfUpdate 任务处于禁用状态。即使计划任务仍然存在且显示为已启用,也不能据此判断配置修改失败。

如何恢复 GeForce Experience 自动更新#

最简单的方式是恢复之前备份的 JSON 文件。也可以手工把下面这一行重新添加到 switches 数组中:

"nv-self-update-path=Downloader\\gfeupdate.json",

注意保持 JSON 的逗号正确,例如:

"nv-def-window-size=1218,845",
"nv-self-update-path=Downloader\\gfeupdate.json",
"nv-node-app=NvNode\\nvnodejslauncher.exe",

保存并重新启动 GeForce Experience 即可。

几个常见误区#

不要锁定整个 GFE 安装目录#

不建议为了阻止更新而禁止下面目录的 SYSTEMAdministrators 或安装程序写权限:

C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience

这种方式虽然也可能阻止升级,但以后卸载、修复或者重新安装 GFE 时容易遇到权限问题。

不要用 gfeupdate.json 是否变化判断结果#

这个文件继续被更新是正常现象。真正应该检查的是 NVIDIA GeForce Experience.json 中是否还存在 nv-self-update-path

不要只删除 NVIDIA App 安装包#

Downloader 之后仍然可能重新下载安装包。单纯删除 NvidiaAppSetupInt_xxx.exe,并不能解决自更新入口本身的问题。

总结#

要阻止旧版 GeForce Experience 通过自身更新机制迁移到 NVIDIA App,不一定需要锁定文件权限,也不需要破坏 NVIDIA Downloader。核心操作只有一个:编辑

C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience\NVIDIA GeForce Experience.json

并删除:

"nv-self-update-path=Downloader\\gfeupdate.json",

需要特别区分的是:

该方法阻止的是 GeForce Experience 调用自身更新安装器,而不是阻止 NVIDIA 检查和下载更新。

因此,即使以后发现 gfeupdate.json 被重新修改、isMandatory 变成 true,甚至 Downloader 中已经存在 NVIDIA App 安装程序,也不一定意味着修改失效。只要 NVIDIA GeForce Experience.json 中仍然没有 nv-self-update-path,这条自更新入口就仍然处于被移除的状态。

评论