前天看到坛子里有人说修改注册表改变windowsapps文件夹位置之后应用闪退,特地装了虚拟机研究了一整天,参考了google搜索排名靠前的几种方式,包括: 1、彻底转移文件夹后mklink方式 2、彻底转移文件夹后修改注册表方式 3、保留原来的文件夹并完整复制到新目录同时修改注册表方式。 一一实践后发现,方法1和2都会导致系统内置应用无法打开,方法3可以使用内置应用并且可以安装新应用,但是如果需要更新内置应用的话,必须将注册表还原,否则会提示无法安装。 考虑到可能是跨卷复制文件导致原来文件夹中包含的某些硬链接丢失链接目标变成普通文件,我还尝试了修改文件夹名之后mklink,发现内置应用依旧无法使用。 因为第三种方式更新应用会很麻烦,考虑到windows大部分设置都和注册表有关,我干脆一不做二不休,把注册表中所有的C:\Program Files\Windowsapps全部都替换成D:\Program Files\Windowsapps,结果发现系统内置应用依旧无法正常使用,但是运行任何一个系统内置应用,再搜索注册表,就会增加一条包含C:\ProgramFiles\Windowsapps的值,在powershell中使用get-appxpackage查询应用信息,发现内置应用的InstallLocation依旧是C:\Program Files\WindowsApps\,这表示内置应用的位置信息并没有存储在注册表中,我把C盘翻了个底朝天,把可能包含应用位置信息的能用notepad++查看的文件都翻了个遍,也没找到微软把这玩意藏在哪儿,最终只好放弃。 另外关于windowsapps的文件夹的特殊权限的问题,我也测试了一下,这个文件夹特别的地方在于所有者是trustedinstaller,并且具有低完整性级别,修改完整性级别对应用的使用没有什么影响,但是修改所有者之后,内置应用会提示需要转到应用商店进行修复,点击修复应用会更新一次,更新完毕之后可以正常使用,但是所有者并没有变自动变回trustedinstaller。
好在现在机械硬盘平均1G还不到1块钱,光一个Nvidia显卡驱动安装后的文件夹都占用了我将近1块钱的空间,windowsapps占用的空间还不到2块钱,其中还有不少是windows自动保留了旧版本的文件,完全没有必要去移动的嘛。
|