已解决 如何获取磁盘分区的挂载点?
本帖最后由 Qokelate 于 2012-5-3 19:53 编辑通过命令MountVol可以列出当前所有盘的挂载点,纯Au3实现(不调用第三方程序)的话怎样实现?
4楼见真相 挂载点?linux?
我可以将挂载点理解为分区么。
DriveGetDrive( "all" ) 回复 2# haijie1223
。。。 打错了 应该是装入点,就是图里那个\\?\*************\ #Include <WinAPIEx.au3>
_WinAPI_GetVolumeNameForVolumeMountPoint 这里面所有的 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
并且 DriveGetDrive( "all" ) 也有的 取出来 , DriveGetDrive( "all" ) 没有的滤掉
;;;;; 纯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)
用 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)
7楼 简化了 不错 获取了这个有什么作用?
页:
[1]