2011-12-15 36 views
10

Esto surgió de mi otra pregunta acerca de IMAPI2 ¿es posible identificar si una unidad de DVD/CD es virtual y no física?Cómo identificar si una unidad es virtual o física

+0

@ L.B Los estados OP, la unidad de DVD/CD es virtual frente a la física; es decir ... está montado a través de algo como MagicISO o es un componente físico del dispositivo. –

Respuesta

2

El propósito de un disco virtual es actuar exactamente como su contraparte física, simplemente sin los medios físicos. Ambos tipos de unidades funcionan con el sistema operativo de la misma manera que un controlador de dispositivo. Dudo mucho que la diferencia entre ellos sea visible dentro de la API de Win32. Eso sería contrario a la intuición del propósito de la unidad virtual.

Miré la información proporcionada por WMI (que está accesible en C#) y encontré algo de interés. La identificación del dispositivo de mi unidad virtual comenzó con 'SCSI', mientras que la identificación del dispositivo de mi unidad SATA física comenzó con 'IDE'. Creo que la mayoría de (todos?) El software de unidad virtual emula una unidad SCSI; No estoy seguro. Típicamente, un usuario tendría una unidad óptica IDE o SATA que tendría una identificación que comienza con 'IDE'.

Virtual Drive Device: "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&00000000&0&000000" 
Real Drive Device: "IDE\CDROMASUS_DRW-24B1ST_________________________1.03____\5&295AF142&0&5.0.0" 

Observe en mi ID de dispositivo de ejemplo que la unidad virtual está claramente identificada como el software Clone Drive. Puede verificar el fabricante y el nombre del producto con una lista conocida de software de unidad virtual. Esto podría generar muchos falsos negativos y ser muy difícil de mantener.

De cualquier manera, no estoy seguro de que la búsqueda de funciones en la identificación del dispositivo sea una solución altamente confiable. Puede haber unidades virtuales que se identifican de manera diferente. Solo probé Clone Drive y Daemon Tools al investigar su pregunta.

Si tuviera que utilizar este enfoque para la protección de derechos de autor (¿para qué otra cosa lo usaría?) Entonces debe considerar si la posibilidad de una determinación de disco virtual falso vale la pena enojar a sus clientes.

Aquí está el código C# para inspeccionar las unidades usando WMI y acceder a la identificación del dispositivo. Deberá hacer referencia al ensamblado System.Management.

string driveLetter = "F"; 
ManagementObjectSearcher diskQuery = new ManagementObjectSearcher(String.Format("SELECT * FROM Win32_CDROMDrive WHERE Drive='{0}:'", driveLetter)); 
ManagementObject diskResult = diskQuery.Get().OfType<ManagementObject>().SingleOrDefault(); 
string deviceID = null; 
if (diskResult != null) 
    deviceID = (string)diskResult["DeviceID"]; 
-4

Un método es navegar a su directorio de computadora, el que tiene c:/unidad y discos duros extraíbles. Con un disco duro físico si hace clic derecho y expulsa el medio, la bandeja de CD/DVD se deslizará; sin embargo, las unidades virtuales borrarán los datos almacenados en la unidad, pero no la deslizarán en la computadora portátil.

+2

-1 El OP está buscando una solución viable a través de C# –

+2

No se puede saber si se está trollando o entendiendo mal ... – RichK

+0

también puede averiguar si está familiarizado con WMI ...? google para muchos ejemplos – MethodMan

0

Busque en "DriveInfo" ... Mire la propiedad DriveType de la misma.

System.IO.DriveInfo di = new System.IO.DriveInfo ("X: \");

Cuestiones relacionadas