找回密码
 加入
搜索
查看: 3076|回复: 9

[系统综合] 如何区分是物理光驱和虚拟光驱?

  [复制链接]
发表于 2013-1-26 20:53:53 | 显示全部楼层 |阅读模式
用 $var = DriveGetDrive("cdrom") 获取所有光驱后,如何区分是物理光驱和虚拟光驱?
发表于 2013-1-26 21:30:41 | 显示全部楼层
你狂读光驱 然后监视硬盘的读操作 发现数据量突然增大应该就是虚拟光驱了
发表于 2013-1-27 00:54:57 | 显示全部楼层
虚拟光驱返回的是cdrom吗?好像不是吧
发表于 2013-1-27 08:19:22 | 显示全部楼层
回复 3# netegg


    是的~
发表于 2013-1-27 10:44:59 | 显示全部楼层
Func _Drive_Optical_Type( $Drive, $Computer = ".")
   If DriveGetType($Drive) <> "CDROM" Then Return SetError(1)
   Local $oRtn = ""
   $Drive = StringUpper($Drive)
   $Obj_CD = ObjGet("winmgmts:\" & $Computer & "\root\cimv2")
   $Items = $Obj_CD.ExecQuery("Select * from Win32_CDROMDrive WHERE Id = '" & $Drive & Chr(39))
   
   For $Item in $Items
          $oRtn = StringMid($Item.DeviceID, StringInStr($Item.DeviceID, "_")+1)
          If StringInStr($oRtn, "Virtual") Then
                 $oRtn = StringMid($oRtn, StringInStr($oRtn, "Virtual"))
                 $oRtn = StringReplace($oRtn, "_", " ", 1)
                 $oRtn = StringLeft($oRtn, 15)
          Else
                 $oRtn = StringLeft($oRtn, StringInStr($oRtn, "_") -1)
          EndIf
   Next
   If $oRtn = "" Then Return SetError(1)
   Return $oRtn
EndFunc  ;<==> _Drive_Optical_Type()
官网上找的,蛋蛋不会wmi
 楼主| 发表于 2013-1-27 19:27:24 | 显示全部楼层
谢谢netegg的wmi,如不用WMI,可否还有其它方法判断?
发表于 2013-1-29 12:58:00 | 显示全部楼层
貌似目前的虚拟光驱都是SCSI了吧?
发表于 2013-1-30 11:28:57 | 显示全部楼层
回复 7# 3mile
现在的存储设备,实体的或者虚拟的,分的有点乱,还真不好说啥是啥
发表于 2013-1-30 11:29:45 | 显示全部楼层
回复 7# 3mile
现在的设备接口,好像挺乱的,实体的和虚拟的
发表于 2013-1-30 22:17:35 | 显示全部楼层
回复 9# netegg
嗯,蛋蛋兄说的有道理
否则那些做光盘加密的厂家也要没事干了哈。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 00:43 , Processed in 0.159673 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表