lsasecur 获取文件夹权限问题
_SeGetFileSecurity获取非本机PC用户组权限时为什么用户组名为空呢?是不是和域有关阿?
怎么才能获取到红框处的用户组名呢?
十分着急,请高手帮忙
#include <lsasecur.au3>
#include <Array.au3>
$sFilePath = "\\192.168.165.83\e$\123" ; 此处为任意其他PC的文件夹
$iSecur = BitOR($SE_INFO_OWNER, $SE_INFO_DACL)
$pSecur = _SeGetFileSecurity($sFilePath, $iSecur)
If ($pSecur = 0) Then
MsgBox(48, "Error", _SeFormatMsg("_SeGetFileSecurity"))
Exit
EndIf
$pOwner = _SeGetSecurityDescriptorOwner($pSecur)
$pDacl = _SeGetSecurityDescriptorDacl($pSecur)
$sOwner = _SeLookupAccountSid($pOwner)
$aList = _SeEnumEntriesFromAcl($pDacl)
_ArrayDisplay($aList, $sOwner) 请楼主兄测试一下,你用explorer自带的安全编辑器 查看安全信息,显示什么?用户名称是类似S-X-X-XX-XXX 这样的SID字符串,还是一串完整的用户名称? 进来学习,更多是关注P版. 回复 2# pusofalse
explorer自带的安全编辑器 在哪啊,我没用过,请版主指点阿 “_SeGetFileSecurity获取【非本机PC用户组】权限时为什么用户组名为空呢?
是不是和域有关阿?”---------->看看这些用户(组)在远程计算机中是否是正常存在的。 回复 5# qqgghh1
是正常的阿,用这段代码在每台PC上都能正常获取本地的用户组和权限,但是获取其它PC就会出现问题而且是某些网段有问题,有些没问题 你用VBS试试能不能得到:
On Error Resume Next
strComputer = "\\192.168.165.83"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_GroupWhere LocalAccount = True")
For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Local Account: " & objItem.LocalAccount
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "SID: " & objItem.SID
Wscript.Echo "SID Type: " & objItem.SIDType
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next 我知道是怎么回事了,好像和域或者防火墙设置有关
页:
[1]