使用ShellClass获取文件属性详细信息的实现方法

时间:2021-08-02 06:20:22

首先引用COM组件
Microsoft Shell Controls And Automation
这里需要注意
DLL的属性Embed Interop Type 设为False
否则会引起互操作类型异常

代码如下
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace(Path.GetDirectoryName(sFile));
FolderItem item = dir.ParseName(Path.GetFileName(sFile));
string det = dir.GetDetailsOf(item, iCol);

iCol 对应文件详细属性汇总
ID  => DETAIL-NAME
0   => Name
1   => Size
2   => Type
3   => Date modified
4   => Date created
5   => Date accessed
6   => Attributes
7   => Offline status
8   => Offline availability
9   => Perceived type
10  => Owner
11  => Kinds
12  => Date taken
13  => Artists
14  => Album
15  => Year
16  => Genre
17  => Conductors
18  => Tags
19  => Rating
20  => Authors
21  => Title
22  => Subject
23  => Categories
24  => Comments
25  => Copyright
26  => #
27  => Length
28  => Bit rate
29  => Protected
30  => Camera model
31  => Dimensions
32  => Camera maker
33  => Company
34  => File description
35  => Program name
36  => Duration
37  => Is online
38  => Is recurring
39  => Location
40  => Optional attendee addresses
41  => Optional attendees
42  => Organizer address
43  => Organizer name
44  => Reminder time
45  => Required attendee addresses
46  => Required attendees
47  => Resources
48  => Free/busy status
49  => Total size
50  => Account name
51  => Computer
52  => Anniversary
53  => Assistant's name
54  => Assistant's phone
55  => Birthday
56  => Business address
57  => Business city
58  => Business country/region
59  => Business P.O. box
60  => Business postal code
61  => Business state or province
62  => Business street
63  => Business fax
64  => Business home page
65  => Business phone
66  => Callback number
67  => Car phone
68  => Children
69  => Company main phone
70  => Department
71  => E-mail Address
72  => E-mail2
73  => E-mail3
74  => E-mail list
75  => E-mail display name
76  => File as
77  => First name
78  => Full name
79  => Gender
80  => Given name
81  => Hobbies
82  => Home address
83  => Home city
84  => Home country/region
85  => Home P.O. box
86  => Home postal code