matai5156 发表于 2012-1-13 12:03:12

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)

pusofalse 发表于 2012-1-20 07:13:55

请楼主兄测试一下,你用explorer自带的安全编辑器 查看安全信息,显示什么?用户名称是类似S-X-X-XX-XXX 这样的SID字符串,还是一串完整的用户名称?

user3000 发表于 2012-1-20 07:58:17

进来学习,更多是关注P版.

matai5156 发表于 2012-1-20 11:11:16

回复 2# pusofalse

explorer自带的安全编辑器 在哪啊,我没用过,请版主指点阿

qqgghh1 发表于 2012-1-20 11:21:10

“_SeGetFileSecurity获取【非本机PC用户组】权限时为什么用户组名为空呢?
是不是和域有关阿?”---------->看看这些用户(组)在远程计算机中是否是正常存在的。

matai5156 发表于 2012-1-20 14:49:01

回复 5# qqgghh1

是正常的阿,用这段代码在每台PC上都能正常获取本地的用户组和权限,但是获取其它PC就会出现问题而且是某些网段有问题,有些没问题

qqgghh1 发表于 2012-1-20 16:05:32

你用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

matai5156 发表于 2012-1-29 10:36:44

我知道是怎么回事了,好像和域或者防火墙设置有关
页: [1]
查看完整版本: lsasecur 获取文件夹权限问题