通过WMI找出pathspec是目录还是文件(或其他东西)?

时间:2009-08-12 21:32:11

标签: .net wmi

我有一些C#代码通过WMI获取有关文件的信息,用于进行以下查询:

SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Path = '\\temp\\' AND FileName = 'testemef' AND Extension = 'txt'

如果我使用CIM_LogicalFile类,我发现我可以查询目录文件:

SELECT * FROM CIM_LogicalFile WHERE Drive = 'C:' AND Path = '\\temp\\' AND FileName = 'testemef' AND Extension = 'txt'

我设计了一种迂回方式来确定返回的实例是文件还是目录:如果我尝试访问FileSize属性时遇到异常,则它是一个目录;如果没有,它是一个文件。我不喜欢这种方法,因为除了目录和文件之外还有其他东西。 (命名管道?符号链接?)

不幸的是,CIM_Directory类中没有任何基本CIM_LogicalFile类中不存在的唯一属性,所以现在我知道某些东西“不是文件” ,而不是“是一个目录”。

在WMI中是否有一种更加密不透风的方式来确定一个不是文件的pathspec实际上是一个目录,而不是其他一些奇特的实体?

1 个答案:

答案 0 :(得分:1)

检查对象的ClassPath.ClassName属性(WMI系统属性__CLASS的托管包装器) - 它为文件夹返回 Win32_Directory ,为文件返回 CIM_DataFile