[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. Option Explicit
  2. ' On Error Resume Next
  3. Dim strDriveLetter,objWbemService,colVolumes,objVolume
  4. strDriveLetter = "D"
  5. Set objWbemService = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!//./root/cimv2")
  6. Set colVolumes = objWbemService.ExecQuery("Select DeviceID,DriveLetter,Label,Name,SerialNumber From Win32_Volume Where BootVolume=False And SystemVolume=False And DriveType=3")
  7. For Each objVolume In colVolumes
  8. '系统盘卷标是Win7 或 Win10
  9.   If LCase(Left(objVolume.Label,3)) = "win" Then
  10.     objVolume.Dismount True,True
  11.     ' ShowError
  12.   Else
  13.     If UCase(Left(objVolume.DriveLetter,1)) <> strDriveLetter Then
  14.       objVolume.DriveLetter = strDriveLetter & ":"
  15.     End If
  16.     If strDriveLetter = "Z" Then Exit For
  17.     strDriveLetter = Chr(Asc(strDriveLetter) + 1)
  18.   End If
  19. Next
  20. Set objVolume = Nothing
  21. Set colVolumes = Nothing
  22. Set objWbemService = Nothing
复制代码

TOP

以管理员身份打开cmd.exe,输入cscript -nologo A.vbs
回车

TOP

A.vbs
  1. Option Explicit
  2. ' On Error Resume Next
  3. Dim strDriveLetter,objWbemService,colVolumes,objVolume
  4. strDriveLetter = "D"
  5. Set objWbemService = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!//./root/cimv2")
  6. Set colVolumes = objWbemService.ExecQuery("Select DeviceID,DriveLetter,Label,Name,SerialNumber From Win32_Volume Where BootVolume=False And SystemVolume=False And DriveType=3")
  7. For Each objVolume In colVolumes
  8.   If LCase(Left(objVolume.Label,3)) = "win" Then
  9.     WSH.Echo "Dismounting volume: " & objVolume.DriveLetter & " with Label: " & objVolume.Label
  10.     objVolume.Dismount True,True
  11.     ' ShowError
  12.   Else
  13.     If UCase(Left(objVolume.DriveLetter,1)) <> strDriveLetter Then
  14.       WSH.Echo "Assign new driveLetter: " & strDriveLetter & " to " & strDriveLetter
  15.       objVolume.DriveLetter = strDriveLetter & ":"
  16.     End If
  17.     If strDriveLetter = "Z" Then Exit For
  18.     strDriveLetter = Chr(Asc(strDriveLetter) + 1)
  19.   End If
  20.   ' WSH.Echo objVolume.DriveLetter & vbTab & objVolume.DeviceID
  21. Next
  22. Set objVolume = Nothing
  23. Set colVolumes = Nothing
  24. Set objWbemService = Nothing
复制代码

TOP

你权限不够啊
微信:flashercs
QQ:49908356

TOP

本帖最后由 flashercs 于 2019-2-21 01:02 编辑
  1. Option Explicit
  2. ' On Error Resume Next
  3. Dim strDriveLetter,objWbemService,colVolumes,objVolume,retValue
  4. strDriveLetter = "D"
  5. Set objWbemService = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!//./root/cimv2")
  6. Set colVolumes = objWbemService.ExecQuery("Select DeviceID,DriveLetter,Label,Name,SerialNumber From Win32_Volume Where BootVolume=False And SystemVolume=False And DriveType=3")
  7. For Each objVolume In colVolumes
  8.   If LCase(Left(objVolume.Label,3)) = "win" Then
  9.     WSH.Echo "Dismounting volume: " & objVolume.DriveLetter & " with Label: " & objVolume.Label
  10.     retValue = objVolume.Dismount(True,True)
  11.     If retValue = 0 Then
  12.       WSH.Echo "Success"
  13.     Else
  14.       WSH.Echo "Failed : " & retValue
  15.     End If
  16.     ' ShowError
  17.   Else
  18.     If UCase(Left(objVolume.DriveLetter,1)) <> strDriveLetter Then
  19.       WSH.Echo "Assign new driveLetter: " & objVolume.DriveLetter & ": to " & strDriveLetter & ":"
  20.       
  21.       objVolume.DriveLetter = strDriveLetter & ":"
  22.       
  23.       End If
  24.     If strDriveLetter = "Z" Then Exit For
  25.     strDriveLetter = Chr(Asc(strDriveLetter) + 1)
  26.   End If
  27.   ' WSH.Echo objVolume.DriveLetter & vbTab & objVolume.DeviceID
  28. Next
  29. Set objVolume = Nothing
  30. Set colVolumes = Nothing
  31. Set objWbemService = Nothing
复制代码
微信:flashercs
QQ:49908356

TOP

回复 9# 5i365

关于如何获得管理员至高无上权限的方法,自行百度。下面这个可以检测是否获取最高权限。
  1. Option Explicit
  2. On Error Resume Next
  3. Dim strDriveLetter,objWbemService,colVolumes,objVolume,retValue
  4. Set objWbemService = GetObject("winmgmts:{ImpersonationLevel=Impersonate}!//./root/cimv2")
  5. objWbemService.Get "Win32_LogonSession.LogonId='999'"
  6. If Err.Number <> 0 Then
  7.   ' ShowError
  8.   WSH.Echo "Lower Privilege.权限太低了。"
  9.   Set objWbemService = Nothing
  10.   WSH.Quit 1
  11. End If
  12. strDriveLetter = "D"
  13. Set colVolumes = objWbemService.ExecQuery("Select DeviceID,DriveLetter,Label,Name,SerialNumber From Win32_Volume Where BootVolume=False And SystemVolume=False And DriveType=3")
  14. For Each objVolume In colVolumes
  15.   If LCase(Left(objVolume.Label,3)) = "win" Then
  16.     WSH.Echo "Dismounting volume: " & objVolume.DriveLetter & " with Label: " & objVolume.Label
  17.     retValue = objVolume.Dismount(True,True)
  18.     If retValue = 0 Then
  19.       WSH.Echo "Success"
  20.     Else
  21.       WSH.Echo "Failed : " & retValue
  22.     End If
  23.     ' ShowError
  24.   Else
  25.     If UCase(Left(objVolume.DriveLetter,1)) <> strDriveLetter Then
  26.       WSH.Echo "Assign new driveLetter: " & objVolume.DriveLetter & ": to " & strDriveLetter & ":"
  27.       ' retValue = objVolume.Dismount(True,False)
  28.       objVolume.DriveLetter = strDriveLetter & ":"
  29.       ' retValue = objVolume.Mount()
  30.     End If
  31.     If strDriveLetter = "Z" Then Exit For
  32.     strDriveLetter = Chr(Asc(strDriveLetter) + 1)
  33.   End If
  34.   ' WSH.Echo objVolume.DriveLetter & vbTab & objVolume.DeviceID
  35. Next
  36. Set objVolume = Nothing
  37. Set colVolumes = Nothing
  38. Set objWbemService = Nothing
复制代码
微信:flashercs
QQ:49908356

TOP

返回列表