查找给定路径中所有文件夹的所有者

时间:2017-09-11 11:02:05

标签: vbscript scripting

我正在尝试查找给定路径中所有文件夹的所有者。我有以下代码:

security.basic.enabled=false
spring.thymeleaf.cache=false

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

我的最终目标是将给定路径中所有文件夹的路径和所有者放入文本文件中。

有人可以帮我找到文件夹的所有者,并能够将此所有者名称放入变量中。然后我可以用它来改进我现有的代码。

1 个答案:

答案 0 :(得分:0)

正如JoSerra提到in the comments,您可以通过WMI类Win32_LogicalFileSecuritySetting检索文件或文件夹的所有者。脚本中心的sample code大部分都是准确的。但是,我建议在路径周围使用双引号而不是单引号。

单引号(与双引号不同)为valid characters in a path。如果使用包含单引号的路径调用语句wmi.Get("Win32_LogicalFileSecuritySetting.Path='" & path & "'"),则调用将失败,并显示“无效对象路径”错误。因此,最好在路径中使用双引号和转义反斜杠。

path = "C:\some\folder 'with' quotes"

Function Esc(str)
    Esc = Replace(str, "\", "\\")
End Function

Set wmi = GetObject("winmgmts:") 
Set fs  = wmi.Get("Win32_LogicalFileSecuritySetting=""" & Esc(path) & """")
rc = fs.GetSecurityDescriptor(sd)

If rc = 0 Then
    WScript.Echo "Owner: " & sd.Owner.Domain & "\" & sd.Owner.Name
Else
    WScript.Echo "Couldn't retrieve security descriptor."
End If