如何实现类似于 net use * /delete /y 的功能?
如题。在UDF的NetShare Management里绕晕了。
我的设想是搜索所有网络连接,然后删除。但是找不到可用的函数。
[ 本帖最后由 sensel 于 2009-4-12 23:15 编辑 ]
$aResult = _NetUseEnum()
For $o = 0 to @Extended - 1
_NetUseDel($aResult[$o])
_NetUseDel($aResult[$o])
Next
Func _NetUseDel($sUseName, $sServer = "")
Local $iResult
$iResult = DllCall("netapi32.dll", "int", "NetUseDel", _
"wstr", $sServer, _
"wstr", $sUseName, _
"dword", 2)
Return SetError($iResult, 0, $iResult = 0)
EndFunc ;==>_NetUseDel()
Func _NetUseEnum($sServer = "")
Local $iResult, $iCount, $pUse, $tUse, $tLocal, $tRemote, $aResult
$iResult = DllCall("netapi32.dll", "int", "NetUseEnum", _
"wstr", "", _
"dword", 0, _
"dword*", 0, _
"dword", -1, _
"dword*", 0, _
"dword*", 0, _
"dword*", 0)
$iCount = $iResult
$pUse = $iResult
If $iCount = 0 Then Return SetError($iResult, 0, False)
Redim $aResult[$iCount]
For $o = 1 to $iCount
$tUse = DllStructCreate("ptr;ptr", $pUse)
$tLocal = DllStructCreate("wchar", DllStructGetData($tUse, 1))
$tRemote = DllStructCreate("wchar", DllStructGetData($tUse,2))
$aResult[$o - 1] = DllStructGetData($tLocal, 1)
$aResult[$o - 1] = DllStructGetData($tRemote, 1)
$tLocal = 0
$tRemote = 0
$pUse += DllStructGetSize($tUse)
Next
$tUse = 0
Return SetError($iResult, $iCount, $aResult)
EndFunc ;==>_NetUseEnum()
回复 2# pusofalse 的帖子
虚拟机测试通过。谢谢!发现一个小问题是NetUseDel似乎只删除信任关系,对于已经映射的网络盘符无法删除。还好au3已经提供了DriveMapDel,只要判断$aResult[$o]是否为空再决定调用哪个就可以了。 學習啦!~感謝您!~
页:
[1]