Win11 在32位应用内不能重命名文件夹的故障排除
最近 Win11 应用内文档想新建文件夹保存,发现文件夹不能重命名,提示“找不到指定文件”,但可以删除该文件夹
原来系统是正常的,最近做过的操作有系统升级及软件卸载,也不确定是哪个环节出了问题
于是网上搜索解决办法,倒是发现有不少的同样问题,但是按文中的办法均没有解决
先是怀疑权限的问题,修改了文件夹、应用程序的安全属性,现象依旧
后来怀疑注册表的问题,将网上的注册表下载导入,再次失望
最后发现有些应用能够重命名成功,有些应用则不行,似乎是 64 位应用成功而 32 位的会失败
为了确认这一点,写了个简单的程序,分别用 64 位和 32 位编译
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
end;
将编译好的程序放在同一路径,最终确认果然是只有 32 位程序不能重命名
问题到底出在哪里呢,一番分析还是把目标定位在注册表
用 Process Monitor 记录 32 位程序的操作,发现以下表项没有找到
这下大概明白了,网上的教程注册表只对 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\ 进行了导入
这是用于 64 位程序的,32 位程序则需要操作 \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\
查看我的注册表,64 位是存在 {A52BBA46-E9E1-435f-B3D9-28DAA648C0F6} 这个键的,32 位却没有
于是将 64 位的注册表导出,改成 32 位的
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{A52BBA46-E9E1-435f-B3D9-28DAA648C0F6}]
"Attributes"=dword:00000001
"Category"=dword:00000004
"DefinitionFlags"=dword:00000040
"Icon"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,\
6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,\
00,31,00,30,00,34,00,30,00,00,00
"LocalizedName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,\
6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
00,5c,00,53,00,65,00,74,00,74,00,69,00,6e,00,67,00,53,00,79,00,6e,00,63,00,\
43,00,6f,00,72,00,65,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,00,32,\
00,34,00,00,00
"LocalRedirectOnly"=dword:00000001
"Name"="OneDrive"
"ParentFolder"="{5E6C858F-0E22-4760-9AFE-EA3317B67173}"
"ParsingName"="shell:::{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
"RelativePath"="OneDrive"
导入修改后的注册表,再测试 32 位程序已经能够重命名文件夹了,问题成功解决