为什么网络共享函数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如何实现对指定电脑的该项扫描呢?
论坛里帖子我也搜索数日,不得其解。 自己的问题自己顶。
刚刚又验证了一次,是netshare.au3所有函数实例都如此。 #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 执行后,产生如下错误:
For $i = 1 To $aAceList
For $i = 1 To $aAceList^ ERROR 回复 4# qqgghh1
不可能是因为数组错误,下载最新的LocalSecurityAuthority.au3试下。 本帖最后由 qqgghh1 于 2009-12-29 19:59 编辑
下载最新LocalSecurityAuthority.au3文件已OK,感谢!
LocalSecurityAuthority.au3 - http://www.autoitx.com/forum.php?mod=viewthread&tid=7080
页:
[1]