找回密码
 加入
搜索
查看: 1761|回复: 5

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

  [复制链接]
发表于 2009-12-29 16:43:24 | 显示全部楼层 |阅读模式
本帖最后由 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][3] = DllStructGetData($tInfo, "Permissions")应该为第四项)

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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2009-12-29 17:16:00 | 显示全部楼层
自己的问题自己顶。
刚刚又验证了一次,是netshare.au3所有函数实例都如此。
发表于 2009-12-29 17:20:33 | 显示全部楼层
#include <LocalSecurityAuthority.au3>

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

$aSecur = _GetNamedSecurityInfo($sShare, $SE_LMSHARE, 4)
If $aSecur[0] = 0 And $aSecur[6] = 0 Then
        Msgbox(0, $sShare, "Full Control.")
Else
        $aAceList = _GetExplicitEntriesFromAcl($aSecur[6])
        For $i = 1 To $aAceList[0][0]
                $sSecurInfo &= "Ace Trustee:" & @Tab & $aAceList[$i][0] & @CRLF
                $sSecurInfo &= "Trustee Sid:" & @Tab & $aAceList[$i][1] & @CRLF
                If $aAceList[$i][3] = $GRANT_ACCESS Then
                        $sSecurInfo &= "Access Type:" & @Tab & "Granted" & @CRLF
                Else
                        $sSecurInfo &= "Access Type:" & @Tab & "Denied" & @CRLF
                EndIf
                $sSecurInfo &= "Permissions:" & @CRLF
                If $aAceList[$i][2] = 0x1F01FF Then
                        $sSecurInfo &= @Tab & "Full Control." & @CRLF
                ElseIf $aAceList[$i][2] = 0x1200A9 Then
                        $sSecurInfo &= @Tab & "Read-only." & @CRLF
                Else
                        $sSecurInfo &= @Tab & "None." & @CRLF
                EndIf
                $sSecurInfo &= @CRLF
        Next
        Msgbox(0, $sShare, $sSecurInfo)
EndIf
 楼主| 发表于 2009-12-29 17:38:27 | 显示全部楼层
执行后,产生如下错误:
For $i = 1 To $aAceList[0][0]
For $i = 1 To $aAceList^ ERROR
发表于 2009-12-29 19:06:09 | 显示全部楼层
回复 4# qqgghh1


    不可能是因为数组错误,下载最新的LocalSecurityAuthority.au3试下。
 楼主| 发表于 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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 02:15 , Processed in 0.085896 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表