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
Respuesta
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"];
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.
Busque en "DriveInfo" ... Mire la propiedad DriveType de la misma.
System.IO.DriveInfo di = new System.IO.DriveInfo ("X: \");
- 1. ¿Cómo identificar si una biblioteca es creación DEBUG o RELEASE?
- 2. volumen de unidad física
- 3. Cómo crear una unidad de Windows virtual
- 4. ¿Cómo puedo determinar si una letra de unidad determinada es una unidad local, asignada o USB?
- 5. puntero a la función: dirección física o virtual
- 6. Averiguar si una propiedad es declarada virtual
- 7. ¿Cómo identificar que se está ejecutando en una máquina virtual?
- 8. En PowerShell, ¿cómo puedo determinar si la unidad actual es una unidad en red o no?
- 9. Server.MapPath - Ruta física dada, ruta virtual espera
- 10. ¿Cómo identificar si un tipo es una estructura personalizada?
- 11. ¿Cómo identificar si la referencia de clase es una interfaz?
- 12. Obtención de una ruta virtual relativa desde la ruta física
- 13. Cómo obtener la ruta física del directorio virtual
- 14. ¿Es una rama de TFS una instantánea física o lógica?
- 15. ¿Cómo identificar si una gramática es LL (1), LR (0) o SLR (1)?
- 16. ¿Cómo detectar si una unidad específica es un disco duro?
- 17. Identificar si una dirección de correo electrónico es 'pública'
- 18. ¿Cómo comprobar si una propiedad es virtual con reflejo?
- 19. Unidad 3d - Clase física para asistir
- 20. En C#, ¿cómo verifica si una ruta es virtual o no?
- 21. Cruz OS funcionalidad unidad virtual
- 22. ¿Cómo traducir una dirección de memoria virtual a una dirección física?
- 23. ¿Cómo identificar si existe un índice Lucene.Net en una carpeta?
- 24. Comprueba de forma programática si una letra de unidad es una unidad compartida/de red
- 25. En C++, ¿es una función automáticamente virtual si anula una función virtual?
- 26. convertir de la ruta física a la ruta virtual
- 27. ¿Cómo identificar si la carpeta está abierta?
- 28. C#: Crear una unidad virtual en la computadora
- 29. ¿Qué es una "Unidad"?
- 30. ¿Cómo maneja KVM la interrupción física?
@ 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. –