首页 > 解决方案 > vbscript 为特定用户名以读/写模式打开共享文件并保持其他用户具有打开只读模式的权限

问题描述

我正在开发一个访问存储在共享路径中的共享 excel 文件的 vbscript。首先 Vbscript 应该检查该文件是否被其他人(有权访问该共享文件的其他用户)使用。如果有人将文件保持在打开状态,vbscript 应该强制释放他们的读写访问权限并给予他们只读访问权限。每当 vbscript 在用户机器上运行时,它应该让用户对该特定文件进行读写访问,而其他用户的权限应该是只读的。

应该有另一个 vbscript 来消除使用上述 vbscript 所做的所有限制。

Sub wkbk_open()

    wkbk_name = "Project List LIVE.xlsm"
    wkbk_lock_file_path = "X:\~$" & wkbk_name

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If objFSO.FileExists(wkbk_lock_file_path) Then
        Debug.Print "The file is locked by " & GetFileOwner(wkbk_lock_file_path)
        Debug.Print "The file is locked by " & GetFileOwner2(wkbk_lock_file_path)
    Else
        Debug.Print "The file is available"
    End If

End Sub

Function GetFileOwner(strFileName)
    'http://www.vbsedit.com/scripts/security/ownership/scr_1386.asp
    Set objWMIService = GetObject("winmgmts:")
    Set objFileSecuritySettings = _
    objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
    intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)

    If intRetVal = 0 Then
       GetFileOwner = objSD.Owner.Name
    Else
       GetFileOwner = "Unknown"
    End If
End Function

Function GetFileOwner2(strFileName) As String

'On Error Resume Next
Dim secUtil As Object
Dim secDesc As Object
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(strFileName, 1, 1)
GetFileOwner2 = secDesc.Owner
End Function

标签: excelvbscriptfile-permissionsreadonlyshared

解决方案


推荐阅读