sensel 发表于 2009-4-12 19:18:56

如何实现类似于 net use * /delete /y 的功能?

如题。
在UDF的NetShare Management里绕晕了。
我的设想是搜索所有网络连接,然后删除。但是找不到可用的函数。

[ 本帖最后由 sensel 于 2009-4-12 23:15 编辑 ]

pusofalse 发表于 2009-4-12 21:00:23


$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()

sensel 发表于 2009-4-12 23:14:38

回复 2# pusofalse 的帖子

虚拟机测试通过。谢谢!

发现一个小问题是NetUseDel似乎只删除信任关系,对于已经映射的网络盘符无法删除。还好au3已经提供了DriveMapDel,只要判断$aResult[$o]是否为空再决定调用哪个就可以了。

nlogo 发表于 2014-4-9 19:38:45

學習啦!~感謝您!~
页: [1]
查看完整版本: 如何实现类似于 net use * /delete /y 的功能?