2011-12-15 9 views
10

Questa è la mia altra domanda su IMAPI2 è possibile identificare se un'unità DVD/CD è virtuale e non fisica?Come identificare se un'unità è virtuale o fisica

+0

@ L.B Gli stati OP, unità DVD/CD è virtuale contro fisico; cioè ... è montato tramite qualcosa come MagicISO o è un componente fisico del dispositivo. –

risposta

2

Lo scopo di un'unità virtuale è agire esattamente come la controparte fisica, senza il supporto fisico. Entrambi i tipi di unità funzionano con il sistema operativo allo stesso modo di un driver di periferica. Dubito fortemente che la differenza tra loro sarebbe visibile all'interno dell'API Win32. Ciò sarebbe contro-intuitivo allo scopo dell'unità virtuale.

Ho esaminato le informazioni fornite da WMI (che è accessibile in C#) e ho trovato qualcosa di interessante. L'ID del dispositivo del mio disco virtuale è iniziato con "SCSI" mentre l'ID del dispositivo del mio disco SATA fisico è iniziato con "IDE". Credo che la maggior parte di (tutti?) Il software delle unità virtuali emuli un'unità SCSI; Non ne sono sicuro. In genere, un utente avrebbe o un disco ottico IDE o SATA che avrebbe entrambi un id che inizia 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" 

Nota nei miei ID dispositivo di esempio che l'unità virtuale è chiaramente identificata come il software Clone Drive. È possibile controllare il produttore e il nome del prodotto confrontandoli con un elenco noto di software di unità virtuale. Questo potrebbe produrre molti falsi negativi ed essere molto difficili da mantenere.

In entrambi i casi, non sono sicuro che la ricerca di funzionalità nell'id del dispositivo sarebbe una soluzione altamente affidabile. Potrebbero esserci unità virtuali che si identificano in modo diverso. Ho testato solo Clone Drive e Daemon Tools nella ricerca della tua domanda.

Se si dovesse utilizzare questo approccio per la protezione del copyright (per quale altro motivo si utilizzerebbe?), È necessario considerare se la possibilità di una determinazione di un'unità virtuale falsa valga la pena di irritare i propri clienti.

Questo è il codice C# per l'ispezione delle unità tramite WMI e accesso all'ID del dispositivo. Sarà necessario fare riferimento all'assembly 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 metodo consiste nel navigare nella directory del computer, quella con c:/drive e dischi rigidi rimovibili. Con un disco rigido fisico se fai clic con il pulsante destro del mouse ed espelli il supporto, il vassoio del cd/dvd si aprirà; tuttavia, le unità virtuali cancelleranno semplicemente i dati memorizzati sull'unità, ma non faranno scorrere il vassoio sul laptop/computer.

+2

-1 L'OP sta cercando una soluzione praticabile via C# –

+2

Non si capisce se la pesca alla traina o l'incomprensione ... – RichK

+0

si può anche capire che questo è familiare con WMI ..? google per molti esempi – MethodMan

0

Cerca in "DriveInfo" ... Guarda la proprietà DriveType di esso.

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

Problemi correlati