我之所以到现在还在使用 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 安装目录#
不建议为了阻止更新而禁止下面目录的 SYSTEM、Administrators 或安装程序写权限:
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,这条自更新入口就仍然处于被移除的状态。
评论