qqgghh1 发表于 2009-12-29 16:43:24

为什么网络共享函数netshare.au3中的_Net_Share_ShareEnum共享权限栏位无返回值

本帖最后由 qqgghh1 于 2009-12-30 12:42 编辑

NetShare.au3所有实例程序中,关于共享权限的部分Permission 都没有返回值。
最简单的例子
#include <Array.au3>
#include <NetShare.au3>
$aShare = _Net_Share_ShareEnum()
_ArrayDisplay($aShare)
关于权限的一栏无论实际权限是什么,返回结果都为0
(查看NetShare.au3源代码中一段$aInfo[$iI] = DllStructGetData($tInfo, "Permissions")应该为第四项)

现在我要实现这个需求:扫描指定电脑存在的所有共享及对应权限(主要是揪出完全共享权限)。
我知道ShareEnum这个软件可以实现对所有加域电脑进行该项扫描,但那个需要domain admins权限。我想用AU3如何实现对指定电脑的该项扫描呢?
论坛里帖子我也搜索数日,不得其解。

qqgghh1 发表于 2009-12-29 17:16:00

自己的问题自己顶。
刚刚又验证了一次,是netshare.au3所有函数实例都如此。

pusofalse 发表于 2009-12-29 17:20:33

#include <LocalSecurityAuthority.au3>

Local $aSecur, $aAceList, $sSecurInfo, $sShare = "MyShare"

$aSecur = _GetNamedSecurityInfo($sShare, $SE_LMSHARE, 4)
If $aSecur = 0 And $aSecur = 0 Then
        Msgbox(0, $sShare, "Full Control.")
Else
        $aAceList = _GetExplicitEntriesFromAcl($aSecur)
        For $i = 1 To $aAceList
                $sSecurInfo &= "Ace Trustee:" & @Tab & $aAceList[$i] & @CRLF
                $sSecurInfo &= "Trustee Sid:" & @Tab & $aAceList[$i] & @CRLF
                If $aAceList[$i] = $GRANT_ACCESS Then
                        $sSecurInfo &= "Access Type:" & @Tab & "Granted" & @CRLF
                Else
                        $sSecurInfo &= "Access Type:" & @Tab & "Denied" & @CRLF
                EndIf
                $sSecurInfo &= "Permissions:" & @CRLF
                If $aAceList[$i] = 0x1F01FF Then
                        $sSecurInfo &= @Tab & "Full Control." & @CRLF
                ElseIf $aAceList[$i] = 0x1200A9 Then
                        $sSecurInfo &= @Tab & "Read-only." & @CRLF
                Else
                        $sSecurInfo &= @Tab & "None." & @CRLF
                EndIf
                $sSecurInfo &= @CRLF
        Next
        Msgbox(0, $sShare, $sSecurInfo)
EndIf

qqgghh1 发表于 2009-12-29 17:38:27

执行后,产生如下错误:
For $i = 1 To $aAceList
For $i = 1 To $aAceList^ ERROR

pusofalse 发表于 2009-12-29 19:06:09

回复 4# qqgghh1


    不可能是因为数组错误,下载最新的LocalSecurityAuthority.au3试下。

qqgghh1 发表于 2009-12-29 19:58:24

本帖最后由 qqgghh1 于 2009-12-29 19:59 编辑

下载最新LocalSecurityAuthority.au3文件已OK,感谢!
LocalSecurityAuthority.au3 - http://www.autoitx.com/forum.php?mod=viewthread&tid=7080
页: [1]
查看完整版本: 为什么网络共享函数netshare.au3中的_Net_Share_ShareEnum共享权限栏位无返回值