手动更改文件夹的元数据

手动更改文件夹的元数据

在 Windows 文件资源管理器中,我可以选择 320 个不同的列1来显示各种文件和文件夹,请参见下面的屏幕截图。我希望​​能够手动操作某些字段的内容,以便能够对我的文件夹例如“业务区域”。如何编辑文件夹的元数据以利用文件资源管理器的各种可能的列条目?例如,在“业务区域”列中添加州/省。

注意:我们同时使用 Windows 10 和 Windows 11。

在此处输入图片描述

1参见Stack Overflow 上的这个答案以获得大致完整的列表。

答案1

如果您将Comments列添加到Details视图This PC或 UserProfile 文件夹,您将看到 Music、Pictrues 和 Videos 文件夹用途的描述。这些内容通过各自的 desk.ini 文件添加到文件夹中。具体来说,是部分InfoTip中命名的值[.ShellClassInfo]。数据可以是系统文件夹中显示的资源引用:

[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21790
InfoTip=@%SystemRoot%\system32\shell32.dll,-12689
...

或字符串文字:

LocalizedResourceName=Custom Display Name
InfoTip=Custom Comment
...

编辑:更新信息——“劫持”其他属性的两种方法

有两种方法可以利用 Windows 属性系统中已存在的属性,但这些属性通常不是文件夹的属性。

第一个是我最近才发现的,它的优点是完全包含在文件夹的桌面.ini 文件中,因此标准用户无需管理员权限即可访问。第二个需要至少一次管理员权限来编辑 HKLM 注册表配置单元,以建立属性与自定义 .ini 文件值之间的映射。

然而,更简单的方法仅限于在FMTID_摘要信息属性集:

姓名 类型 PID VT 代码 VT 名称 规范名称
标题 细绳 2 31 VT_LPWSTR 系统标题
主题 细绳 3 31 VT_LPWSTR 系统.主题
作者 多串 4 31 VT_LPWSTR 系统.作者
标签 多串 5 31 VT_LPWSTR 系统.关键字
总编辑时间 时间跨度(左右) 10 21 VT_UI8 系统.文档.总编辑时间
最后印刷 文件时间 11 64 VT_FILETIME 系统.文档.打印日期
内容创建 文件时间 12 64 VT_FILETIME 系统.文档.创建日期
上次保存日期 文件时间 12 64 VT_FILETIME 系统.文档.保存日期
页面 Int32 14 3 VT_I4 系统.文档.页数
字数 Int32 14 3 VT_I4 系统.文档.字数统计
程序名称 细绳 18 31 VT_LPWSTR 系统应用程序名称
  • 在 Windows 中探索者详细信息视图中,Content createdDate last saved列通常分别通过“镜像”文件系统属性Date created和来填充Date modifed。通过文件设置这些值desktop.ini将覆盖此默认行为,而不会影响文件系统属性。

desktop.ini文件中,它们使用以下格式分配:

  • Prop<PID> = <VT code>,<Property value>
[{F29F85E0-4FF9-1068-AB91-08002B27B3D9}]
Prop2  = 31,Title
Prop3  = 31,Subject 
Prop4  = 31,Author1;Author2
Prop5  = 31,Tags;Tag1;Tag2
; Total editning time is essentially an unsighed TimeSpan,
; entered as a uint64 value representing the ticks in the TimeSpan
Prop10 = 21,90000000000
; Last Printed
Prop11 = 64,1969-07-20T20:17:00
; Content Created
Prop12 = 64,2023-04-20T11:11:11
; Date last saved
Prop13 = 64,1944-06-06T06:30:00
; Pages
Prop14 = 3,942
; Word count
Prop15 = 3,999
Prop18 = 31,Application Name


*** 更新编辑结束 ***


要分配其他属性,例如Rating,难题的另一个部分是将信息提示值映射到属性系统。这在注册表中的以下项下指定:

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DesktopIniPropertyMap\PropertySetStorage

Regsitry 的屏幕截图

每个可用属性都可以通过一个唯一的属性键它由 FMTID/PID 对组成。FMTID 是格式标识符 (FMTID),一组相关属性,PID 是一个整数,引用 FMTID 组内的特定属性。

System.Comments 的 FMTID/PID 是:
{F29F85E0-4FF9-1068-AB91-08002B27B3D9},6 这些值命名了将该属性映射到 PID 键下的条目的子键:

姓名 类型 价值
钥匙 REG_SZ 值名称
部分 REG_SZ 部分名称
变量类型 REG_DWORD 数据类型

在此处输入图片描述

因此,按照 InfoTip 提供的示例,我们也可以“劫持”其他属性。

虽然你可以在网上找到一些 FMTID/PID 列表,但我使用 NirSoft 的属性系统查看器--- 这是一个很棒的工具。

因此,如果您想要填充Country/Region文件夹的属性,您可以创建注册表项:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DesktopIniPropertyMap\PropertySetStorage\{B0B87314-FCF6-4FEB-8DFF-A50DA6AF561C}\100 并为 desk.ini 文件指定 Key、Section 和 VarType。

在此处输入图片描述

因此,将映射添加到注册表后,文件夹中的desktop.ini文件将指定:

[Custom]
Rating=50
Region=Midwest
[.ShellClassInfo]
InfoTip=and now...

并将相关列添加到Details视图,我们得到:

在此处输入图片描述

记住:

文件夹必须ReadOnly设置其属性才能desktop.ini处理文件。将Attributes列添加到资源管理器中的详细信息视图以检查文件夹的属性。忽略属性对话框中的只读复选框,它不是状态指示器。

创建基本desktop.ini文件并同时设置文件夹的ReadOnly属性的快捷方法是通过文件夹属性对话框中的自定义选项卡为文件夹指定自定义图标。然后,您可以编辑desktop.ini文件--添加自定义条目,甚至删除自定义图标信息(如果您真的不需要它)。


注册出口Country/Region

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DesktopIniPropertyMap\PropertySetStorage\{B0B87314-FCF6-4FEB-8DFF-A50DA6AF561C}\100]
"Key"="Region"
"Section"="Custom"
"VarType"=dword:0000001f


Reg export for Rating(注意VarType现在指定VT_UINT,一个无符号整数):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DesktopIniPropertyMap\PropertySetStorage\{64440492-4C8B-11D1-8B70-080036B11A03}\9]
"Key"="Rating"
"Section"="Custom"
"VarType"=dword:00000017


相关内容