Qokelate 发表于 2012-5-3 17:30:08

已解决 如何获取磁盘分区的挂载点?

本帖最后由 Qokelate 于 2012-5-3 19:53 编辑

通过命令MountVol可以列出当前所有盘的挂载点,纯Au3实现(不调用第三方程序)的话怎样实现?




4楼见真相

haijie1223 发表于 2012-5-3 18:43:31

挂载点?linux?
我可以将挂载点理解为分区么。
DriveGetDrive( "all" )

Qokelate 发表于 2012-5-3 19:00:07

回复 2# haijie1223


    。。。   打错了   应该是装入点,就是图里那个\\?\*************\

netegg 发表于 2012-5-3 19:00:12

#Include <WinAPIEx.au3>
_WinAPI_GetVolumeNameForVolumeMountPoint

veket_linux 发表于 2012-5-3 19:30:42

这里面所有的 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

并且 DriveGetDrive( "all" ) 也有的 取出来 , DriveGetDrive( "all" ) 没有的滤掉

veket_linux 发表于 2012-5-3 19:58:48


;;;;;   纯au3实现
#include <array.au3>
Local $drive_array = DriveGetDrive("ALL")
;_ArrayDisplay($drive_array)

Local $read_reg_array
$read_reg_array = 20

Local $item
Local $value
Local $i
Local $loopend

For $i = 1 to 20
        $item = RegEnumVal("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $i)
        if @error <> 0 Then ExitLoop
        $value = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", $item)
        $read_reg_array[$i] = $item
        $read_reg_array[$i] = $value
next
$loopend = $i - 1
;_ArrayDisplay($read_reg_array)

Local $array
$array = 20
Local $j
Local $k = 1
For $i = 1 To $loopend-1
        For $j = $i+1 To $loopend
                If Not StringCompare($read_reg_array[$i], $read_reg_array[$j]) Then
                        $array[$k] = $read_reg_array[$i]
                        $array[$k] = $read_reg_array[$j]
                        $k += 1
                        ExitLoop
                EndIf
        Next
Next
;_ArrayDisplay($array)
For $i = $k - 1 To 1 Step -1
        For $j = 1 To $drive_array
                If StringInStr($array[$i], $drive_array[$j]) Or StringInStr($array[$i], $drive_array[$j]) Then
                        ExitLoop
                EndIf
        Next
        If $j>$drive_array Then
                _ArrayDelete($array, $i)
        EndIf
Next
_ArrayDisplay($array)

veket_linux 发表于 2012-5-3 20:08:19

用 API 就 简单了

#include <WinAPIEx.au3>
Local $drive_array = DriveGetDrive("ALL")
Local $msgboxtext = ""
Local $i
For $i = 1 To $drive_array
        $msgboxtext &= $drive_array[$i] & " ---> " & _WinAPI_GetVolumeNameForVolumeMountPoint($drive_array[$i] & "\") & @CRLF
Next
MsgBox(0, "", $msgboxtext)

ooxxgod 发表于 2012-5-3 21:25:05

7楼 简化了 不错

penguinl 发表于 2012-5-3 22:11:50

获取了这个有什么作用?
页: [1]
查看完整版本: 已解决 如何获取磁盘分区的挂载点?