excel - 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
解决方案
推荐阅读
- autodesk-forge - 如何在 Autodesk Forge 查看器中聚合多个地理定位模型
- java - javax.xml.transform.Transformer的Transformer如何抑制对html文本框编码值的解码
- .net-core - Ocelot 发布请求未通过
- git - 推送到 GitHub,如何用敏感信息替换配置文件?
- django - 如何将图像上传到 Django
- html - 全屏宽度的卡盒 - 引导程序
- sql - 使用某些条件匹配模式并使用 Oracle 中的 regexp_replace 将其替换为某个字符串
- python - 将单线从 Numpy Python 转换为 Julia,其中涉及将一个 2D 数组映射到另一个 2D 数组
- drawing - Use clipboard images to draw paths that repeat over entire length of the line
- azure-data-factory - 将文件从一个区域复制到其他区域 - Azure Data Lake Gen2