【问题标题】:How to get user permissions of a file with Excel 2003 VBA?如何使用 Excel 2003 VBA 获取文件的用户权限?
【发布时间】:2013-03-19 06:23:19
【问题描述】:

我是 的新手,我的任务是列出给定文件夹中的文件以及对每个文件具有权限的用户。

  • 我能够获取文件夹中的文件名,
  • 但我不知道如何获取有权限的用户列表。

我正在使用 excel 2003。

我发现这段代码将“所有人”添加到文件夹的权限中:

'在权限函数中添加所有人 SetPermissions() 暗淡 strHomeFolder、strHome、strUser 暗淡 intRunError, objShell, objFSO

strHomeFolder = "C:\Test"

Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strHomeFolder) Then
    intRunError = objShell.Run("%COMSPEC% /c Echo Y| cacls " _
    & strHomeFolder & " /e /c /g everyone:F ", 2, True)

    If intRunError <> 0 Then
        Wscript.Echo "Error assigning permissions for user " _
        & strUser & " to home folder " & strHomeFolder
    End If
End If End Function

但是,我不知道如何修改代码以返回指定文件夹授予的当前权限。我也想对指定的文件执行此操作。我真的很感激任何帮助。谢谢!

【问题讨论】:

  • Google vbscript(在 Excel 中可作为 vba 执行)、文件权限acl。这应该让你开始

标签: vba excel vba file-permissions


【解决方案1】:

要获取文件的所有者,此功能可能会帮助您:

Function GetFileOwner(fileDir As String, fileName As String) As String
Dim secUtil As Object
Dim secDesc As Object
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & fileName, 1, 1)
GetFileOwner = secDesc.owner
End Function

【讨论】:

  • 查看即时窗口,我得到了这条答案:
    ?GetFileOwner("C:\Users\xxx\Documents\","log.docx")
    LOC\Octopus
  • 感谢八达通提供代码。不幸的是,我需要文件的权限,而不是所有者的权限。但我感谢你的帮助。再次感谢!
猜你喜欢
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多