[英]List permissions from a shared folder using .net
我一直在考虑创建一个列出服务器共享文件夹的应用程序,即:输入主机,然后它将给我该服务器共享文件夹的列表,并给我可以访问该服务器的用户和组。夹。
我知道我可以从以下位置获取共享文件夹的列表:
注册表:
HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ LanmanServer \\ Shares
WMI:
选择*从win32_share
来自以下方面的安全性:
注册表:
HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ services \\ LanmanServer \\ Shares \\ Security
有关它的更多信息:
http://technet.microsoft.com/zh-cn/library/cc781716%28v=ws.10%29.aspx
我可以通过打开\\\\ 10.10.10.5这样的远程共享来获取该信息,并且它将在资源管理器中显示共享文件夹的列表,如果我可以访问,那么我可以简单地右键单击并单击属性,那么它将给我什么我需要,但是我需要编程方式。
本地解决方案: http : //www.indented.co.uk/2009/02/19/reading-ntfs-and-share-security-with-vbscript/
远程解决方案:
strComputer = WScript.Arguments(0)
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMI.ExecQuery("Select * from win32_share where type='0'")
For Each i In colItems
strDir = i.path
WScript.Echo "Share Name: " & i.name
strDir = Replace(strDir,"\","\\")
Set colItems = objWMI.ExecQuery("Select * from win32_logicalFileSecuritySetting WHERE Path='" & strDir & "'",,48)
for each objItem in colItems
If objItem.GetSecurityDescriptor(wmiSecurityDescriptor) Then
WScript.Echo "GetSecurityDescriptor failed"
DisplayFileSecurity = False
WScript.Quit
End If
For each wmiAce in wmiSecurityDescriptor.DACL
strACE = wmiAce.Trustee.Domain & "\" & wmiAce.Trustee.Name
'If instr(strACE,".") then
wscript.echo " " & strACE
'end If
Next
Next
Next
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.