使用 regedit 将 ProfileImagePath 更改为目标用户文件夹,它仍然不断要求输入旧文件路径

使用 regedit 将 ProfileImagePath 更改为目标用户文件夹,它仍然不断要求输入旧文件路径

我重命名了我的主用户文件夹

C:\Users\oldName

C:\Users\newName

然后在 regedit 中更改该用户的 profileImagePathComputer\HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows NT\CurrentVersion\ProfileList\{user SID}

C:\Users\newName 在启动时,它一直告诉我C:\Users\oldName\Desktop is unavailable.

我是否遗漏了什么?编辑 profileImagePath 应该使我的桌面可以引用C:\Users\newName\Desktop,对吗?

我最初在使用 OneDrive 时遇到了问题,但在将所有文件移动到其所属位置后,我取消了链接。

在我找到可行的方法之前,我想我必须撤销我的更改

答案1

在 Windows 上,当用户创建新的环境变量时,操作系统会将该信息存储在系统注册表中的以下位置:

$User = "HKEY_CURRENT_USER\Environment"
$Machine = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment"

操作系统将所有环境变量从注册表复制到进程。环境变量始终在程序终止时被销毁,并且仅保留在系统注册表中,除非它们是在进程范围内专门创建的,在这种情况下,它们是从与进程关联的环境块中检索的。换句话说,当在用户范围内创建环境变量时,需要重新启动当前进程才能使更改生效。同样,在机器范围内创建的环境变量通常需要重新启动计算机。

您现在面临的问题是由已经扩展的环境变量引起的(例如,$env:LOCALAPPDATA\My App在注册表中存储为查找某些 DLL 的重要路径的程序将此路径存储为,"C:\Users\$OldName\AppData\Local\My App"而该路径在您的系统上不再存在。)

您至少应该查看$User$Machine路径以检查是否有任何路径可供您更新。

但请注意,根据您在更改名称之前已安装的应用程序数量,您肯定会遇到更多问题。您的程序正在寻找的某些路径存储在 JSON 或 INI 文件中,有时甚至存储在数据库中。因此,如果您的任何应用程序停止工作,请检查它们是否依赖于用户配置文件中的任何路径

相关内容