Listar todos os \ Device \ Harddiskvolume.

5

Eu tentei comandos do Diskpart como "list" "volume" (não, não é nada disso), "disk" e "partition"; mas ainda não funciona.

\ Device \ Harddiskvolume0 parece não ser usado, já que \ Device \ Harddiskvolume1 significa que a primeira partição do Windows (também conhecida como "System Reserved") e \ Device \ Harddiskvolume2 é para C:.

Portanto, a questão é: Como listar cada disco de instalação \ Device \ Harddiskvolume in Windows '7 (para edição BCD)?

    
por X.LINK 28.03.2016 / 16:11

4 respostas

1

O motivo pelo qual eu não consegui fazer as coisas é que o HarddiskVolume não reflete os volumes do Diskpart - que listam apenas todos os volumes legíveis do Windows -.

Na verdade, ele funciona com todas as partições disponíveis no disco - mesmo as que não são do Windows -, por ordem, aparecem no Gparted do Linux.

Por exemplo, se você tiver um sda4 antes de sda3, este último será mostrado como é -sda4, depois sda3- (HarddiskVolume4, em seguida, HarddiskVolume3).

Então, isso significa que o HarddiskVolume0 não existe principalmente no BCD.

Os comandos que me ajudaram a entender são:

mountvol /L

bootsect /nt60 all /force   ->   Be careful with that one !!!

Esses links também me ajudaram:

Por fim, se você tiver um Windows sobressalente, basta executar o DriveLetterView para ver como o Windows funciona com o HarddiskVolume.

Nota: O HarddiskVolume é uma notação WMI / COM

    
por 28.03.2016 / 20:22
2

Como faço para listar todos os volumes do disco rígido no Windows?

Isso pode ser feito usando diskpart .

Solução 1:

  1. Executar diskpart .

  2. Digite list volume para listar todos os volumes de disco anexados

  3. Digite exit

Exemplo de saída:

F:\test>diskpart

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: HAL

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     D                       DVD-ROM         0 B  No Media
  Volume 1         System Rese  NTFS   Partition    100 MB  Healthy    System
  Volume 2     C                NTFS   Partition    449 GB  Healthy    Boot
  Volume 3         Recovery     NTFS   Partition     16 GB  Healthy    Hidden
  Volume 4     E   SANDISK      FAT32  Removable     59 GB  Healthy
  Volume 5     F   Expansion    NTFS   Partition   2794 GB  Healthy

DISKPART> exit

Leaving DiskPart...

F:\test>

Solução 2:

  1. Executar diskpart .

  2. Digite list disk para listar todos os discos anexados.

  3. Digite select disk # , em que # é o número do disco.

  4. Digite detail disk

  5. Repita os passos 3 e 4 para cada disco.

  6. Digite exit

O exemplo de saída abaixo mostra que atualmente tenho 3 discos com 5 volumes.

Exemplo de saída:

F:\test>diskpart

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: HAL

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          465 GB      0 B
  Disk 1    Online           59 GB      0 B
  Disk 2    Online         2794 GB  7168 KB

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> detail disk

WDC WD5000LPVX-08V0TT5
Disk ID: D831FAA5
Type   : ATA
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : PCIROOT(0)#ATA(C00T00L00)
Current Read-only State : No
Read-only  : No
Boot Disk  : Yes
Pagefile Disk  : Yes
Hibernation File Disk  : No
Crashdump Disk  : Yes
Clustered Disk  : No

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 1         System Rese  NTFS   Partition    100 MB  Healthy    System
  Volume 2     C                NTFS   Partition    449 GB  Healthy    Boot
  Volume 3         Recovery     NTFS   Partition     16 GB  Healthy    Hidden

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> detail disk

SanDisk Cruzer USB Device
Disk ID: 00000000
Type   : USB
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : UNAVAILABLE
Current Read-only State : No
Read-only  : No
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 4     E   SANDISK      FAT32  Removable     59 GB  Healthy

DISKPART> select disk 2

Disk 2 is now the selected disk.

DISKPART> detail disk

Seagate Expansion Desk USB Device
Disk ID: 75447009
Type   : USB
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : UNAVAILABLE
Current Read-only State : No
Read-only  : No
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 5     F   Expansion    NTFS   Partition   2794 GB  Healthy

DISKPART> exit

Leaving DiskPart...

F:\test>

Leitura Adicional

por 28.03.2016 / 16:39
2

Encontrou um script powershell que lista os volumes montados:

# Biuild System Assembly in order to call Kernel32:QueryDosDevice. 
   $DynAssembly = New-Object System.Reflection.AssemblyName('SysUtils')
   $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run)
   $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SysUtils', $False)

   # Define [Kernel32]::QueryDosDevice method
   $TypeBuilder = $ModuleBuilder.DefineType('Kernel32', 'Public, Class')
   $PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('QueryDosDevice', 'kernel32.dll', ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), [Reflection.CallingConventions]::Standard, [UInt32], [Type[]]@([String], [Text.StringBuilder], [UInt32]), [Runtime.InteropServices.CallingConvention]::Winapi, [Runtime.InteropServices.CharSet]::Auto)
   $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String]))
   $SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError')
   $SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('kernel32.dll'), [Reflection.FieldInfo[]]@($SetLastError), @($true))
   $PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute)
   $Kernel32 = $TypeBuilder.CreateType()

   $Max = 65536
   $StringBuilder = New-Object System.Text.StringBuilder($Max)

   Get-WmiObject Win32_Volume | ? { $_.DriveLetter } | % {
       $ReturnLength = $Kernel32::QueryDosDevice($_.DriveLetter, $StringBuilder, $Max)

       if ($ReturnLength)
       {
           $DriveMapping = @{
               DriveLetter = $_.DriveLetter
               DevicePath = $StringBuilder.ToString()
           }

           New-Object PSObject -Property $DriveMapping
       }
   }

Fonte: link

A saída é assim:

DevicePath               DriveLetter
----------               -----------
\Device\HarddiskVolume2  F:         
\Device\HarddiskVolume7  J:         
\Device\HarddiskVolume10 D:         
\Device\HarddiskVolume12 E:         
\Device\HarddiskVolume5  C:    
    
por 30.12.2017 / 21:35
-1

Se você quiser apenas descobrir onde o seu armazenamento BCD do sistema está, dê uma olhada no valor de \ REGISTRY \ MACHINE \ BCD00000000 na chave de registro HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ hivelist. Sim, sua localização pode ser diferente de \ Device \ HardDiskVolume1, mesmo se estiver na primeira partição do primeiro disco físico.

    
por 01.10.2016 / 20:42