Come arrivare in auto informazioni id del volume

Ho un file txt con id volume.

Ho bisogno di arrivare in auto info (lettera di unità, unità di misura, ecc.) dall’unità di volume id (Windows):

l’id del volume è il seguente formato:

\\?\Volume{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

L’unità può essere Rimovibile/disco locale

Non importa quanto le informazioni vengono recuperate (potrebbe essere script, cpp ,c#, java), del codice).

EDIT:

Ho provato ad usare DriveInfo, Win32_LogicalDisk, Win32_Volume, Win32_PnpDevices – ma non riuscivo a trovare questo strano id… in tutti i casi, la id ha un differrent formato

AGGIORNAMENTO:

Scoperto come fare.

è possibile enumerare Win32_Volume come questo:

ManagementObjectSearcher ms = new ManagementObjectSearcher("Select * from Win32_Volume");    
foreach(ManagementObject mo in ms.Get())   
{
    var guid = mo["DeviceID"].ToString();

    if(guid == myGuid)
        return mo["DriveLetter"];
}
Come ha fatto u ottenere l’id nel file txt. Decodificare, per raggiungere i risultati.
Sto cercando di tenere traccia di dove il File di “Storia” (nuova funzionalità in windows 8) è savingi il suo file di backup. Ho trovato che il nome del dispositivo di destinazione viene salvato in un file xml, si salva anche la lettera di unità e il nome, ma questo non è sufficiente perché questi parametri non sono univoci e possono essere modificate: somene espellere il dispositivo e quindi la prossima volta avrà un’altra lettera assegnata, ecc… così ho scoperto che microsoft, consente di risparmiare anche qualcosa di simile al seguente: “<TargetVolumePath> \\?\Il Volume{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} <\TargetVolumePath>”, che è un id univoco.

OriginaleL’autore user844541 | 2012-04-17

4 Replies
  1. 2

    Dimensione del Volume, eccetera è facile. Basta usare il normale Win32 metodi. Qualsiasi funzione che accetta "C:" come un disco anche accettare il percorso GUID volume (perchè è quello che un \\?\Volume{XXX} è propriamente detto).

    La “lettera” è un po ‘ più complicato di quanto ci può essere 0, 1 o più lettere di unità. È necessario chiamare FindFirstVolumeMountPoint /FindNextVolumeMountPoint /FindVolumeMountPointClose per ottenere tutti loro.

    Si può adda codice di esempio utilizza WMI? Ho usato GetVolumeNameForVolumeMountPoint e funziona, ma non riuscivo a farlo funzionare utilizzando wmi.
    Vedere l’esempio a msdn.microsoft.com/en-us/library/windows/desktop/…

    OriginaleL’autore MSalters

  2. 2

    Provare a utilizzare questo

    System.Management.ManagementObjectSearcher ms =
    new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
    foreach (ManagementObject mo in ms.Get())
    {
        //Find by ID
    }

    Per i dettagli reed questo Classe Win32_DiskDrive

    OriginaleL’autore Likurg

  3. 1

    C’è una funzione API per questo:
    GetVolumePathNamesForVolumeName

    Restituisce un valore null terminato array, per consentire più punti di montaggio. Se si dispone di un solo punto di mount (tipico), la si può leggere come una normale stringa con terminazione null.

    Questo è più efficiente che l’enumerazione dei dischi/volumi, che potrebbe essere causa di inattività dischi per la selezione di.

    OriginaleL’autore GravityWell

  4. -2

    È possibile utilizzare DriveInfo.GetDrives Metodo per ottenere informazioni sull’unità. Ecco il codice di esempio MSDN

    DriveInfo[] allDrives = DriveInfo.GetDrives();
    
    foreach (DriveInfo d in allDrives)
    {
        Console.WriteLine("Drive {0}", d.Name);
        Console.WriteLine("  File type: {0}", d.DriveType);
        if (d.IsReady == true)
        {
            Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
            Console.WriteLine("  File system: {0}", d.DriveFormat);
            Console.WriteLine(
                "  Available space to current user:{0, 15} bytes", 
                d.AvailableFreeSpace);
    
            Console.WriteLine(
                "  Total available space:          {0, 15} bytes",
                d.TotalFreeSpace);
    
            Console.WriteLine(
                "  Total size of drive:            {0, 15} bytes ",
                d.TotalSize);
        }
    }
    Mentre fa questo codice elenco delle unità attualmente installato sul computer, purtroppo non rispondere alla domanda (cioè, modalità di accesso alle unità da GUID), non vi è alcuna proprietà in DriveInfo che riguarda il GUID di un auto.

    OriginaleL’autore ABH

Lascia un commento