Как получить права пользователя на файл с помощью Excel 2003 VBA?

Я новичок в vba, и мне было поручено составить список файлов в данной папке, а также пользователей с разрешениями для каждого файла.

  • Мне удалось получить имена файлов в папке,
  • но я не знаю, как получить список пользователей с разрешениями.

Я использую Excel 2003.

Я нашел этот код, который добавляет «всех» к разрешениям папки:

'Добавляет всех в разрешениях Функция SetPermissions () Dim strHomeFolder, strHome, strUser Dim 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

Однако я не знаю, как изменить код, чтобы вернуть текущие разрешения, предоставленные указанной папкой. Я бы тоже хотел сделать это для указанного файла. Буду очень признателен за любую помощь. Спасибо!


person mini    schedule 19.03.2013    source источник
comment
Google vbscript (исполняемый как vba в Excel), права доступа к файлам, acl. Это должно помочь вам начать   -  person brettdj    schedule 19.03.2013


Ответы (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
person Octopus    schedule 19.03.2013
comment
Посмотрев сразу же в окне, я получил следующий ответ: ‹br› ?GetFileOwner("C:\Users\xxx\Documents\","log.docx") ‹br› LOC\Octopus - person Octopus; 19.03.2013
comment
Спасибо Octopus за код. К сожалению, мне нужны разрешения файла, а не владельца. Но я ценю вашу помощь. Спасибо еще раз! - person mini; 26.03.2013